Background Image

FORUM

조회 수 1582 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

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


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Linux 64bit
CUBRID Ver.
10.1.3.7765-265e708
CUBRID TOOL Ver.
10.1.0.0006 (64bit)
응용 환경(API)
java


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

SELECT CASE WHEN chr(32) = chr(0) THEN 'Y' ELSE 'N' END FROM DB_ROOT  ->  수행결과: Y
SELECT CASE WHEN ' ' = '' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN chr(32) = '' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN chr(32) = ' ' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN chr(0) = '' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN chr(0) = ' ' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y

 

분명 chr(0)은 NULL을 의미하는 특수문자고 chr(32)는 공백문자임에도 불구하고 동일한 값으로 인식됩니다.
뿐만 아니라 chr(0), chr(32), ' ', '' 모두 동일한 값으로 나타나는 것을 알 수 있었습니다.
* cubrid.conf 에 oracle_style_empty_string  값은 설정하지 않았습니다.
* 오라클에서는 chr(32) = ' ' 의 경우만 Y로 결과가 출력됩니다

 

SELECT CASE WHEN 'A ' = 'A' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN ' A' = 'A' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: N
SELECT CASE WHEN 'A B' = 'AB' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: N
SELECT CASE WHEN 'A' || chr(0) = 'A' || chr(32) THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN chr(0) || 'A' = chr(32) || 'A' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y
SELECT CASE WHEN 'A' || chr(0) || 'B' = 'A' || chr(32) || 'B' THEN 'Y' ELSE 'N' END FROM DB_ROOT  -> 수행결과: Y

 

뿐만 아니라 다른 문자가 포함된 문자열은 제일 오른쪽에 있는 값만 '' 와 공백문자가 같은 값으로 인식되고
chr(0) 과 chr(32) 는 언제나 동일한 값으로 인식됩니다.

 

SELECT REPLACE('TEST ING', chr(32), '') FROM DB_ROOT -> 수행결과: 'TESTING'
SELECT REPLACE('TEST ING', chr(0), '') FROM DB_ROOT -> 수행결과: 'TESTING'
SELECT REPLACE('TEST ING', ' ', '') FROM DB_ROOT -> 수행결과: 'TESTING'
SELECT REPLACE('TEST ING', '', '') FROM DB_ROOT -> 수행결과: 'TEST ING'
SELECT REPLACE('TESTING ', '', '') FROM DB_ROOT -> 수행결과: 'TESTING '

 

더 나아가 REPLACE 문 수행시에는 이제와서 '' 와 공백문자가 다른 값으로 인식됩니다.

 

특수문자에 대한 처리가 뒤죽박죽이라 프로젝트 상에서의 처리가 곤란합니다.
확실하게 정의 부탁드립니다.

 

  • ?
    오명환 2021.03.10 14:56
    문의한 사항에 대해 답변드립니다.

    * chr(32) 와 chr(0)를 비교시 같은 문자로 처리하고 있습니다.
    * v11.0 이전 버전에서는 두 문자열을 비교시 문자열 마지막에 있는 공백 문자를 무시하고 비교합니다. 그래서 ' '와 '' 의 비교시 같다라고 결과를 줍니다.
    v11.0부터는 varchar type에서는 비교시 공백 문자를 무시하지 않고 비교하게 변경되었습니다. 즉 ' '와 ''는 다른 문자열로 처리합니다.

    즉, 문자 또는 문자열을 비교할때만 위와 같은 원칙이 적용됩니다.

  1. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4255
    read more
  2. 브로커(CAS)수 질문드립니다!

    Date2023.06.05 By요시니 Views149
    Read More
  3. 데이터 이관 문의입니다.

    Date2023.05.30 Bykipo0821 Views125
    Read More
  4. 8.4.4 charset. Collation 확인 방법

    Date2023.05.24 By네오랜덤 Views175
    Read More
  5. 8.4.4버젼 charset 확인

    Date2023.05.23 By네오랜덤 Views182
    Read More
  6. 쿼리 속도 차이 질문

    Date2023.05.18 By하얀미스 Views139
    Read More
  7. spring boot 에서 HikariPool-1 - Driver does not support get/set network timeout for connections. (java.lang.UnsupportedOperationException) 질문 드립니다.

    Date2023.05.18 Bykjaminam Views725
    Read More
  8. cci 프로그래밍에서 DB LINK 관련 문의

    Date2023.05.18 Byjjune1206 Views123
    Read More
  9. 큐브리드 매니저 실행이 오류

    Date2023.05.18 By청주시청 Views97
    Read More
  10. ddl 추출

    Date2023.05.17 By네오랜덤 Views95
    Read More
  11. 하나의 쿼리에서 복수 테이블 업데이트 방법 문의

    Date2023.05.17 By도담도담 Views122
    Read More
  12. cubrid driver 설치 문의

    Date2023.05.08 By고구망구망 Views424
    Read More
  13. 큐브리드 매니저 접속 이 안됩니다. 확인 요청 드립니다.

    Date2023.04.28 By뿡이 Views127
    Read More
  14. Fk값 가져오기

    Date2023.04.24 By네오랜덤 Views159
    Read More
  15. 서버 메모리 교체 및 ha 상 데이터 삭제 절차

    Date2023.04.20 By레피엘 Views105
    Read More
  16. java stored procedure 에 loadjava 로 jar 파일 로드 시 java.lang.ClassNotFoundException 에러 문의

    Date2023.04.18 By개미가불쌍해 Views138
    Read More
  17. Cubrid stored procedure 스케쥴 등록 형식

    Date2023.04.17 ByRoy Views104
    Read More
  18. 암호화 함수 MDB_ENC 질문입니다

    Date2023.04.17 ByBE-DEV Views79
    Read More
  19. auto_increment 추가 방법 문의

    Date2023.04.14 By부패방지운영팀 Views239
    Read More
  20. CUBRID 사용자 계정 생성 관련 문의

    Date2023.04.14 By몽키스패너 Views127
    Read More
  21. order by 이후 rownum이 의도와 다르게 찍힙니다.

    Date2023.04.14 By바보똥개 Views134
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 199 Next
/ 199

Contact Cubrid

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