본문 바로가기

Database/SQL

6. SQL SELECT문 - 5.와일드카드를 이용한 필터링

5. 와일드카드를 이용한 필터링


- LIKE 연산자와 같이 사용

- 대소문자의 구별은 DBMS마다 다를 수 있음



 와일드카드

 설명

 기타

% 또는 *

갯수에 관계 없이 모든 문자

('1개 이상'이 아니라, '0개 이상'의 문자 포함)

Access : *

_ 또는 ?

한 개의 문자

Access : ?

 [ ]

괄호 [ ] 안의 문자 중 하나의 문자와 일치하는 모든 레코드 검색

 

^ 또는 !

NOT과 같음

Access : !



EX.1 % 또는 *

SELECT product_id, product_name

FROM Products

WHERE product_name LIKE 'Apple%'

* Access : WHERE product_name LIKE 'Apple*'

* Products 테이블에서 product_id와 product_name 필드를 가져온다.

  단, product_name이 Apple로 시작하는 레코드만 가져옴

* DBMS의 대소문자 구별여부에 따라 결과가 다르다.

  구별하는 경우 Apple Pie, Apple jam은 가져올 수 있지만 apple pie, apple jam은 가져오지 않는다.

  구별하지 않는 경우 Apple pie, Apple jam, apple pie, apple jam 모두 가져온다.



WHERE product_name LIKE '%Apple%'

    - Apple의 앞,뒤로 모든 문자를 포함하는 문자열

    - Real Apple pie ..... 



WHERE product_name LIKE 'a%e'

    - a로 시작하고 e로 끝나는 모든 문자열

    - apple, age, ae, ......

    - %는 아무것도 없는 것도 포함하므로 ae도 가져온다.



EX.2 _ 또는 ?

SELECT product_id, product_name

FROM Products

WHERE product_name LIKE '__ inch teddy bear%'

* Access : WHERE product_name LIKE '?? inch teddy bear'

* Products 테이블에서 product_id와 product_name 필드를 가져온다.

  단, product_name중 ' inch teddy bear' 앞에 2글자가 있는 레코드만 가져옴(inch 앞에 있는 공백도 문자로 간주함)

* 레코드가 8 inch..., 12 inch..., 15 inch... 등 세 개가 있을 때, 8 inch...는 제외한 나머지 2개를 가져온다.

* 8 inch 까지 가져오려면 WHERE product_name LIKE '?inch teddy bear'를 사용하면 된다. 




EX.3 [  ]

SELECT product_id, product_name

FROM Products

WHERE product_name LIKE '[JM]%'

* Products 테이블에서 product_id와 product_name 필드를 가져온다.

  단, product_name중 J로 시작하거나 M으로 시작하는 모든 레코드를 가져온다.

* Junior Sports pants, Man's denim pants 같은 레코드들을 가져올 수 있다.




EX.4 ^ 또는 !

SELECT product_id, product_name

FROM Products

WHERE product_name LIKE '[^JM]%'

* Access : WHERE product_name LIKE '[!JM]'

* Products 테이블에서 product_id와 product_name 필드를 가져온다.

  단, product_name중 J로 시작하거나 M으로 시작하는 문자열을 제외한 레코드들을 가져온다.


▶ 위의 WHERE절은 NOT연산자를 이용하여 아래와 같이도 쓸 수 있다.

    WHERE NOT product_name LIKE '[JM]%'