Background Image

FORUM

조회 수 68 추천 수 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 Views1158
    read more
  2. FOREIGN KEY 오류관련해서 문의 드립니다.

    Date2021.03.23 By미샤클로렌 Views65
    Read More
  3. 컬럼상 콤마 삭제 질문드립니다.

    Date2021.03.19 By테스형2 Views73
    Read More
  4. 큐브리드 9.3) 터미널을 이용하여 큐브리드 DB ubloaddb시 object 파일 깨짐 현상

    Date2021.03.18 By솨솨솨 Views78
    Read More
  5. 간단한 조회 쿼리가 BUSY 상태로 남아있는 문제

    Date2021.03.17 Byysh Views119
    Read More
  6. 기존 디스크 용량 부족으로 새 디스크 만든다음에 큐브리드 DB이전시 작동안하는 문제

    Date2021.03.16 Byysh Views68
    Read More
  7. 큐브리드 포트포워딩 문의

    Date2021.03.16 By쪼아 Views71
    Read More
  8. HA 구성 Master Server csql 에서 insert 시 Slave Server apply 안되는 현상

    Date2021.03.12 ByDBS Views63
    Read More
  9. unloaddb / loaddb 실행할 때 clob파일을 유지할 수 있는 방법 있을까요?

    Date2021.03.12 By김동현 Views62
    Read More
  10. 데이터베이스 구성(테이블)을 복제하고 싶습니다.

    Date2021.03.12 By김동현 Views63
    Read More
  11. 쿼리 조회오류인가요??

    Date2021.03.11 By다음 Views70
    Read More
  12. chr(0)과 공백문자 관련 문의입니다.

    Date2021.03.10 ByRaven Views68
    Read More
  13. loaddb 시 에러 문의

    Date2021.03.10 ByWWWW Views58
    Read More
  14. cub_manager 관련 질문

    Date2021.03.08 By파인 Views71
    Read More
  15. exists 문이 너무 느립니다

    Date2021.03.08 ByRaven Views70
    Read More
  16. 리눅스에서 내보내기 시 파이프라인 구분자를 통한 출력 문의

    Date2021.03.08 ByJB Views57
    Read More
  17. .net db목록 관련 질문 드립니다.

    Date2021.03.05 By파인 Views66
    Read More
  18. 윈도우 2007

    Date2021.03.04 By김둥둥 Views57
    Read More
  19. sql문에 대해 문의 드립니다!

    Date2021.03.03 Bysql초보 Views67
    Read More
  20. backupdb 실행 문의

    Date2021.03.02 ByJB Views73
    Read More
  21. unloaddb internal system failure 문의

    Date2021.02.26 Bybchlim Views48
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 171 Next
/ 171

Contact Cubrid

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