Background Image

FORUM

조회 수 718 추천 수 0 댓글 5
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Linux 64bit
CUBRID Ver.
9.3
CUBRID TOOL Ver.
10.1.0.002
응용 환경(API)
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 컬럼을 문자로 검색시 좋은 방법이 있나요?
  • ?
    오명환 2018.03.07 10:17
    to_number() 함수는 숫자형 문자를 숫자로 바꾸는 함수입니다.
    원하시는 것은 한글(utf8) 문자를 숫자로 바꾸어서 integer 컬럼과 비교를 하시려는 것 같은데요.
    원하시는 결과일지는 모르지만, 문자를 hex 문자로 변경하고 이를 10진수 문자열로 변경해서 to_number() 함수로 변경하면 가능합니다. (인덱스 스캔도 가능합니다.)

    위의 예제를 변경하면 다음과 같습니다.

    SELECT *
    FROM tmp
    WHERE idx = to_number(conv(hex('비'), 16, 10));
  • ?
    starworld 2018.03.08 18:46
    답글 감사합니다.

    그런데 to_number(conv(hex('1'), 16, 10)) ===> 49로 변환되어
    idx 가 1인 값이 검색되는것이 아니라 49인 값이 검색되네요.

    다른 좋은 방법이 없을까요?
  • ?
    오명환 2018.03.08 19:00
    기본 함수로는 숫자 문자형과 문자형을 int로 변경하기 어려울 것 같으며, java stored function을 만들어서 사용하시는 방법이 있습니다.
    비교하는 글자가 한글자이면, decode와 chr 함수를 통해 비교해서, '1' ~ '9' 사이는 to_number()로 그외에는 위에 설명한 함수로 사용하는 방법도 가능합니다.

    관련 문의사항이 있는데, 위의 table 중 idx를 문자열 타입으로 만들면 쉬울 것 같은데, 꼭 int 타입으로 하고 그것을 문자열로 비교할 필요가 있나요 ?
  • ?
    starworld 2018.03.09 08:59
    게시판 검색에 쓰이는데요, idx 는 게시판 일련번호이고, 검색항목에 전체/글번호(일련번호)/제목/내용 이 있으며 사용자가 어떤 단어로 검색을 하든 오류없이 정확하게 검색이 되야하는 시스템입니다.
  • ?
    오명환 2018.03.09 14:16
    "전체"에 대한 검색시 idx에 문자열 검색을 할 것 같은데요.
    이 부분은 응용에서 검색문자열을 확인해서 문자인 경우에는 idx를 검색 조건으로 사용하지 않으면 됩니다.

    "전체"에서 제목과 내용 필드에 대해서는 좌우절단 like 검색i(%%)으로 수행할 것 같은데, 좌우절단 like은 ndex scan을 하지 못하므로 성능 이슈가 발생할 수 있습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 43
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3993 db에 저장되어 있는 CLOB 데이터의 위치가 어디로 저장되는지 확인하는 방법이 있을까요? new 자바천재 2024.04.25 5
3992 큐브리드 서비스 시작이 안됩니다. file 황남빵 2024.04.24 10
3991 큐브리드 JDBC 드라이버 XA문의 및 큐브리드 분산트랜잭션(XA) 지원 문의 1 update 몽키스패너 2024.04.24 17
3990 group_concat 변수 리턴 관련... 1 썬더기 2024.04.22 22
3989 기 DB에서 테이블 정보만 가져와서 다른 DB에 생성 1 바다소금 2024.04.22 17
3988 큐브리드 매니저 속도 문의 연동테스트용 2024.04.22 10
3987 cubrid count 속 2 kanin 2024.04.19 27
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 4 ysk96 2024.04.18 49
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 20
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 30
3983 Regexp_count 4 SEO 2024.04.09 66
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 64
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 40
3980 unloaddb & loaddb 관련 질문이 있습니다. 1 543534512 2024.04.06 46
3979 mac m1 다운로드 오류 1 file 혜주냉면 2024.04.05 41
3978 list 함수로 만든 sequence type을 varchar로 변환 문의 1 플레이어블 2024.04.04 36
3977 DECODE, CASE WHEN 사용법 문의 2 핑크팬더 2024.04.03 55
3976 schema 파일 loaddb - 스키마 정보 중복오류 문의 4 daay 2024.03.21 91
3975 object to string 4 네오랜덤 2024.03.20 68
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales