티스토리 뷰
기능
와일드카드로 지정한 패턴과 일치하는 문자열, 날짜, 시간 등을 검색할 수 있다.
기본 형식
SELECT [열] FROM [테이블] WHERE [열] LIKE [조건값]
[열]: 조건을 적용할 열 이름을 입력한다.
[조건값]: 조건값을 입력한다.
활용
1. LIKE 와 %로 특정 문자열을 포함하는 문자열 검색하기
% 사용법
- A%: A로 시작하는 모든 문자열
- %A: A로 끝나는 모든 문자열
- %A%: A를 포함하는 모든 문자열
1.1. 'symbol' 열에서 A를 포함하는 문자열 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%A%'
해석:
- 나스닥 회사의 모든 열을 검색한다.
- 'symbol' 열 데이터에 'A'를 포함하는 문자를 검색한다.
1.2. 'symbol' 열에서 첫 번째 글자가 A로 시작하지 않는 문자열 검색
SELECT * FROM nasdaq_company
WHERE symbol NOT LIKE '%A%'
해석:
- 나스닥 회사의 모든 열을 검색한다.
- 'symbol' 열 데이터에 'A'를 포함하지 않는 문자를 검색한다.
2. _로 특정 문자열을 포함하는 특정 길이의 문자열 검색하기
_ 사용법
- A_: A로 시작하면서 뒤의 글자는 무엇이든 상관없으며 전체 글자 수는 2개인 문자열
- _A: A로 끝나면서 앞의 문자는 무엇이든 상관없으며 전체 글자 수는 2개인 문자열
- _A_: 세 글자 중 가운데 글자만 A이며 앞뒤로는 무엇이든 상관없는 문자열
2.1. 문자열의 길이가 2인 'symbol' 검색: 'A' 를 포함
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A_'
해석:
- 나스닥 회사의 모든 열을 검색한다.
- 'A'를 포함해 문자열의 길이가 2인 'symbol'만 검색한다.
2.2 문자열의 길이가 4인 'symbol'를 검색: 'A'로 시작하고 'C'로 끝남
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A__C'
해석:
- 나스닥 회사의 모든 열을 검색한다.
- 'A'로 시작하고, 'C'로 끝나면서 문자열이 4개인 'symbol'을 검색한다.
3. [ ]로 문자나 문자 범위를 지정해 문자열 검색하기
[ ] 사용법
- [A,B,C]% 또는 [A-C]%: 첫 글자가 A 또는 B 또는 C로 시작하는 모든 문자열 검색
- %[A,B,C] 또는 %[A-C]: 마지막 글자가 A 또는 B 또는 C로 끝나는 모든 문자열 검색
3.1. 첫 글자가 'A'이고 2번째 문자가 'A' 또는 'B' 또는 'C'인 'symbol' 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A,B,C]'
해석:
- 나스닥 회사의 모든 열을 검색한다.
- 1번째 문자가 'A', 2 번째 문자가 'A' 또는 'B' 또는 'C'인 symbol을 검색한다.
3.2. 첫 글자가 'A'이고 2번째 문자가 'A' , 'B' , 'C'가 아닌 'symbol' 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[^A, ^B, ^C]'
참고
특수 문자를 포함한 문자열을 검색하고 싶다면
%는 0개 이상의 문자를 의미하는 예약어이기 때문에 그냥 LIKE를 사용해서 검색하면 나오지 않는다.
이럴 때 사용하는 문법이 바로 ESCAPE이다.
(임시테이블로 'CTE' 만들었다고 가정한다.)
WITH CTE (col_1) AS (
SELECT 'A%BC' UNION ALL
SELECT 'A_BC' UNION ALL
SELECT 'ABC'
)
SELECT * FROM CTE
WHERE col_1 LIKE '%#%%' ESCAPE '#'
ESCAPE 문이 쿼리를 실행할 때 # 을 제거해 쿼리 명령 단계에서는 '%#%%'이 호출되고 실제 실행할 때는 '%%%'로 해석되어, %를 포함하는 앞뒤 어떠한 문자가 와도 상관없는 데이터가 검색되는 원리이다.
'SQL' 카테고리의 다른 글
[SQL] 데이터베이스, 테이블을 생성, 삭제, 수정 (0) | 2023.06.07 |
---|---|
[SQL] 데이터 그룹화 하기 GROUP BY, HAVING (0) | 2023.06.07 |
[SQL] ORDER BY (1) | 2023.06.04 |
[SQL] WHERE (0) | 2023.06.04 |
[SQL] SELECT (0) | 2023.06.04 |