SQL 와일드카드

% (Represents zero or more characters)

가장 많이 사용하고 기본적인 와일드카드이다.

모든 문자를 포함하고 없는 경우도 해당된다.

 

ex)

SELECT    *

FROM    tb_test

WHERE   name    LIKE    '%동%'

 

결과)

이동건

김동곤

박동

동숙

_ (Represents single character)

해당하는 문자만큼의 와일드카드이다.

DB를 관리하다 보면 테이블명에 '_'를 많이 사용하게 되는데 이 때문에 곤란한 경우가 있다.

 

ex)

SELECT    *

FROM    tables

WHERE   name    LIKE    'tb_%'

 

결과)

tb_test

tb_item

tbs

 

위과 같이 tb_로 시작하는 것을 조건으로 걸고 싶었지만 결과는 '_'를 와일드카드로 인식하여 의도하지 않은 결과를 출력하게 될 수 있다. 이러한 경우에는 제어문자 '#'를 활용하여 'tb#_%' ESCAPE '#'처럼 사용하면 된다.(잘 사용하진 않는다)

[ ] (Represents any single character within the brackets)

해당하는 패턴 안에 포함되는 하나의 문자에 대한 와일드카드

 

ex)

SELECT    *

FROM    phone

WHERE   number    LIKE    '[0][0-9][0-9]'

 

결과)

010

051

070

 

마찬가지로 [A-Z]와 같이 활용도 가능하다.

^ (Represents any single character not in the brackets)

해당하는 패턴 안에 포함되는 하나의 문자를 제외하는 와일드카드

 

ex)

SELECT    *

FROM    member

WHERE   name    LIKE    '김[^동]_'

 

결과)

김서욱

김남호

김북건

 

중간에 '동'이 들어간 경우에는 조회되지 않는다.