SQL문에서 like를 이용한 검색..


오라클 WITH문을 이용해서 테스트  해보겠다..

WITH T AS (

SELECT '324324'    COL1, 'ASDDD' COL2 FROM DUAL UNION ALL

SELECT 'AB234C'    COL1, 'AG_%%D' COL2 FROM DUAL UNION ALL

SELECT 'A3424B'    COL1, 'AS_DFD' COL2 FROM DUAL UNION ALL

SELECT 'AB234C'    COL1, 'AS_DDD' COL2 FROM DUAL UNION ALL

SELECT 'A3211C'    COL1, 'AS_DAZ' COL2 FROM DUAL UNION ALL

SELECT 'AB111C'    COL1, 'AG_D%F' COL2 FROM DUAL

)

SELECT * FROM T

WHERE COL1 LIKE 'AB%'


컬럼 COL1 앞 두문자가 AB인 Row를 검색하는 조건이다..

결과는..  

AB234C AG_%%D

AB234C AS_DDD

AB111C AG_D%F


컬럼 COL1 뒤 문자가 4C로 끝나는 Row를 검색하는 조건

SELECT * FROM T

WHERE COL1 LIKE '%4C'

결과는

AB234C AG_%%D

AB234C AS_DDD


컬럼 COL1 두번째  문자가 B로 끝나는 Row를 검색하는 조건

_ : 는 문자 하나를 의미한다.

SELECT * FROM T

WHERE WHERE COL1 LIKE '_B%'

결과는

AB234C AG_%%D

AB234C AS_DDD

AB111C AG_D%F


그런데 COL2 값같이 %, _ 포함되어 있는 컬럼을 검색해야 한다면..  ESCAPE 문을 써주면 된다.

컬럼 COL2 앞문자가 AG_로 끝나는 Row를 검색하는 조건은

SELECT * FROM T

WHERE COL2 LIKE 'AG\_%' ESCAPE '\'

결과는

AB234C AG_%%D

AB111C AG_D%F


ESCAPE 옵션은 백슬래쉬(\)문자를 이스케이프문자로 식별하게 해서 _를 조건으로 인식하게 한다.

Posted by 무세1
,