728x90
와일드카드란 ?
문자열 검색 또는 패턴 매칭을 수행할 때 사용되는 특수 문자이다
와일드카드를 사용하면 특정한 패턴을 포함하는 데이터를 선택하거나 필터링할 수 있다
'%' 와일드카드
- '%' 는 0개 이상의 문자를 나타내는 와일드카드이다
- ' LIKE 'a%' '는 'a' 로 시작하는 모든 문자열을 출력한다
'_' 와일드카드
- '_' 는 하나의 문자를 나타내는 와일드카드이다
- ' LIKE '_b' '는 두 번째 문자가 'b'인 문자열을 출력한다
와일드카드 사용법
1. % 와일드카드
SELECT * FROM EMPLOYEES
WHERE LAST_NAME LIKE 'Sm%'; -- '%Sm%' '%Sm' '[Sm]%' '[m-s]%' '[^S]%'
Sm으로 시작하는 모든 LAST_NAME을 가진 직원을 모두 출력한다
- %Sm% : 'Sm'이 포함된 모든 문자열
- %Sm : 'Sm' 으로 끝나는 모든 문자열
- [Sm]% : 첫번째 문자가 'S' 이나 'm' 인 모든 문자열
- [m-s]% : 첫번째 문자가 'mnopqrs' 에 속하는 모든 문자열
- [^S]% : 첫번째 문자가 'S' 가 아닌 모든 문자열
2. _ 와일드카드
SELECT * FROM EMPLOYEES
WHERE LAST_NAME LIKE '_O%';
두 번째 문자가 'o'인 LAST_NAME 을 가진 직원을 모두 출력한다
_ 와일드 카드는 하나의 문자를 나타내는 와일드카드로 단독으로 사용해서 특정 조건을 만들 순 없다
위와 같이 주로 'LIKE' 절과 함께 사용되고 다른 문자와 함께 조합하여 특정 패턴을 검색하거나 필터링하는 데 사용된다
주의 사항
와일드카드는 성능 문제를 유발할 수 있으므로 필요한 경우에만 사용하는 것이 좋음
와일드카드를 사용한 검색은 대소문자를 구분할 수 있음
Escape 식별자
escape 식별자로 like 연산자를 사용하여 '%' 및 '_' 가 포함된 문자 패턴을 검색할 수 있다
위의 쿼리문들로 예시를 들어보면
SELECT * FROM EMPLOYEES
WHERE LAST_NAME LIKE '_O%';
와 같이 쿼리를 작성하면 두번째 문자가 0으로 시작하는 모든 문자열을 출력하지만
SELECT * FROM EMPLOYEES
WHERE LAST_NAME LIKE '\_O%' escape '\'; -- '_0' 로 시작하는 문자열 모두 출력
와 같이 escape를 사용하면 '_' 를 문자열로 인식하여 문자 그대로 출력되게 된다
SELECT * FROM EMPLOYEES WHERE LAST_NAME LIKE '\_O%' escape '\';
SELECT * FROM EMPLOYEES WHERE LAST_NAME LIKE '*_O%' escape '*';
SELECT * FROM EMPLOYEES WHERE LAST_NAME LIKE 'a_O%' escape 'a';
위 세개의 쿼리는 모두 같은 결과를 출력한다
이와 같이 escape 식별자는 모든 문자가 가능하다
728x90
'DBMS > SQL Study' 카테고리의 다른 글
| [SQL] BETWEEN .. AND .. | IN (0) | 2023.08.29 |
|---|---|
| [SQL] 논리 연산자 (0) | 2023.08.29 |
| [SQL] CONCAT() 함수 (0) | 2023.08.29 |
| [SQL] AS (Alias) 키워드 (0) | 2023.08.28 |
| [SQL] TRUNCATE와 DELETE | DISTINCT와 GROUP BY 의 차이점 (0) | 2023.08.28 |