LIKE를 사용하면 와일드 카드로 지정한 패턴과 일치하는 문자열, 날짜, 시간등을 검색 할 수 있다.
SELECT [열] FROM [테이블] WHERE [열] LIKE [조건값]
1) [열] : 조건을 적용할 열 이름을 입력
2) [조건값] : 조건값을 입력
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A%'
결과를 보면 첫 번째 글자가 A로 시작하는 문자열을 출력
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'AA%'
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%A'
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%AA'
SELECT * FROM nasdaq_company
WHERE symbol LIKE '%A%'
SELECT * FROM nasdaq_company
WHERE symbol NOT LIKE 'A%'
WITH CTE (col_1) AS (
SELECT 'A%BC' UNION ALL
SELECT 'A_BC' UNION ALL
SELECT 'ABC'
)
SELECT * FROM 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문이 쿼리를 실행할 때 #을 제거해 쿼리 명령 단계에서는 '%#%%'이 호출되고 실제 실행할 때는 '%%%'으로 해석되어, %를 포함하는 앞뒤 어떠한 문자가 와도 상관없는 데이터가 검색 되는 것이다.
ESCAPE에 사용할 문자는 #외에 &,!,/등 다른 것도 쓸 수 있다.
※※※ 다만 해당 문자가 실제 문자열에 쓰이지 않는 것이어야 한다. 그래야 의도하지 않은 데이터 오류를 방지 할 수 있다 ※※※
WITH CTE (col_1) AS (
SELECT 'A%BC' UNION ALL
SELECT 'A_BC' UNION ALL
SELECT 'ABC'
)
SELECT * FROM CTE
WHERE col_1 LIKE '%%%'
% 기호는 검색할 수 있는 값이 아닌, 0개 이상의 문자를 의미하는 예약어 이기 때문이다
====================================================
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 '!'
SELECT * FROM CTE
WHERE col_1 LIKE '%!%%' ESCAPE '!'
SELECT * FROM CTE
WHERE col_1 LIKE '%%%'
※※※ ESCAPE로 !가 제거되고 실행
_ 로 특정 문자열을 포함하는 특정 깅리의 문자열 검색 하기
만약 해당 문자열을 포함하는 특정 길이의 문자열을 검색하려면 어떻게 해야 할까?
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A_'
SELECT * FROM nasdaq_company
WHERE symbol LIKE '_A'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A__C'
특정 문자열로 시작하면서 특정 범위에는 사용자가 원하는 문자열을 포함하는 데이터를 검색
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A_C%'
SELECT * FROM nasdaq_company
WHERE symbol LIKE '__F%'
SELECT * FROM nasdaqcompany
WHERE symbol LIKE 'A%L'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A, B, C]'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A-C, G, M-R]'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[^A, ^B, ^C]'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[^A-C]'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[C,P][^T]%W'
SELECT * FROM nasdaq_company
WHERE symbol LIKE 'A[A-C]_O%'
※※※ O 뒤로는 아무거나 와도 상관없다
SELECT * FROM nasdaq_company
WHERE company_name LIKE '%apple%'
SELECT * FROM nasdaqcompany
WHERE symbol LIKE 'AA[L,Q]%'
SELECT * FROM nasdaq_company
WHERE close_price >=10 AND close_price <=20
AND company_name NOT LIKE '%A%'
AND ipo_year >= 2017
ORDER BY close_price DESC, ipo_year ASC