오라클 LIKE 조건에 대한 특이한 사항에 대해 문의 드립니다. 0 5 2,529

by 거제도원주민 [SQL Query] SQL LIKE [2018.08.26 13:38:46]


오랫동안 쿼리를 해 왔지만 제가 이런 경우 처음이라

SELECT DATA_ID
  FROM DUAL
 WHERE DATA_ID  LIKE 'USE_ID%' 로 쿼리를 할때

DATA_ID 에는 'USERID' 와 'USE_ID' 라는 값이 존재 할때

위의 쿼리로 실행 했을때 USERID와 USE_ID 2 ROW가 출력됩니다.

물론 출력대상은 USE_ID 만 출력이 되어야 합니다.

혹시 이런 경험이나 경우가 발생했을때 조치 하셨다면 알려 주시면 감사하겠습니다.

현재 사용 오라클11g 입니다.

 

by 야신 [2018.08.26 13:46:48]
SELECT DATA_ID
  FROM DUAL
 WHERE DATA_ID  LIKE 'USE\_ID%'  ESCAPE '\'

 


by 거제도원주민 [2018.08.26 13:57:59]

빠른 답변 주셔서 감사합니다.

혹시 그렇다면 '_' 앞에는 모두 이렇게 처리를 해야 한다는 건지요!!

테이블 컬럼을 관리하다보니 약어와 약어사이를 '_' 로 처리된 대략 25000여개가 존재하는데

쉽지가 않아 보여서요,,,

ABNM_DESC 비정상적요 ABNORMALITY DESCRIPTION
ABNM_MH_INDC 비정상 시수여부 ABNORMALITY MAN-HOUR INDICATOR
ABOV_WORK_DUR 이상작업일수 ABOVE WORK DURATION
ABRD_ENIN 국외근로소득 ABROAD EARNED-INCOME
ABRD_INDC 국외여부 ABROAD INDICATOR
ABSC_ILGL_DVDI 무결일할여부 ABSC_ILGL_DVDI
ABSN_FD 부재종료일자 ABSENCE FINISH-DATE
ABSN_SD 부재시작일자 ABSENCE START DATE(YYMMDD)
ACCM_ACTL_CNT 누계실적건수 ACCUMULATION,ACCUMULATE ACTUAL COUNT
ACCM_ACTL_MH 누계실적시수(직접,배부) ACCUMULATION,ACCUMULATE ACTUAL MAN-HOUR
ACCM_AMHJ 누계실적시수작업 ACCUMULATED ACTUAL MANHOUR JOB

위와 같은 경우라.....


by 야신 [2018.08.26 14:26:44]

검색어에 _ 나 % 가 묶은문자열로 포함되어 검색할 경우에는 escape 를 사용해야 될것 같네요.


by 마농 [2018.08.27 07:25:31]
SELECT *
  FROM t
 WHERE data_id LIKE REPLACE('USE_ID'||'%', '_', '\_') ESCAPE '\'
;

 


by 거제도원주민 [2018.08.27 08:31:37]

아~ 너무너무 감사합니다. 마농님

도움으로 해결이 되었습니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입