* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit | |
9.3 | |
10.1.0.002 |
|
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요.
CREATE TABLE temp (
idx integer NOT NULL,
CONSTRAINT pk PRIMARY KEY(idx)
);
위와 같이 테이블 생성후 idx 컬럼 조회시
SELECT *
FROM temp
WHERE idx = '비'
SELECT *
FROM temp
WHERE idx = TO_NUMBER('비')
위와 같이 조회시 모두 오류가 납니다.
SELECT *
FROM temp
WHERE TO_CHAR(idx) = '비'
위와 같이 해야 되는데 인덱스를 못타니 속도에 문제가 있는데
number 컬럼을 문자로 검색시 좋은 방법이 있나요?
원하시는 것은 한글(utf8) 문자를 숫자로 바꾸어서 integer 컬럼과 비교를 하시려는 것 같은데요.
원하시는 결과일지는 모르지만, 문자를 hex 문자로 변경하고 이를 10진수 문자열로 변경해서 to_number() 함수로 변경하면 가능합니다. (인덱스 스캔도 가능합니다.)
위의 예제를 변경하면 다음과 같습니다.
SELECT *
FROM tmp
WHERE idx = to_number(conv(hex('비'), 16, 10));