LIKE 연산자
특정 단어가 들어있는지 검색하려면 LIKE
WHERE 조건식 자리에는 = > < 이런거 넣을 수 있다고 했는데
LIKE 도 넣을 수 있습니다. 그거 쓰면 원하는 단어 검색이 가능합니다.
지난시간에 만든 테이블에서 계속 진행해볼 것인데
저기서 상품명이 '소파'가 들어있는걸 찾고 싶다면 WHERE 조건식에서 LIKE 문법 사용하면 됩니다.
SELECT * FROM product
WHERE 상품명 LIKE '소파'
WHERE 뒤에 컬럼명 LIKE '값' 이런 식으로 작성하면 됩니다.
LIKE 뒤에 검색어를 적으면 그 글자만 정확히 들어있는 행만 찾아주는데 그럼 아무 쓸데없겠죠?
그래서 % 기호를 붙입니다.
SELECT * FROM product
WHERE 상품명 LIKE '%소파%'
% 기호는 아무글자라는 뜻입니다. 전문용어로 와일드카드라고 합니다.
그래서 위 처럼 작성하면 '아무글자 + 소파 + 아무글자' 조합에 일치하는 행을 전부 찾아줍니다.

(참고)
- 문자검색 문법이라 문자가 저장된 컬럼에서만 검색가능합니다.
- CHAR(6) 데이터타입의 경우 총 6자를 저장할 수 있는데 4자만 입력해도 나머지 뒷부분 2자를 공백으로 꽉 채워줍니다.
예를 들어서 '가죽소파'를 저장해도 '가죽소파 ' 이렇게 저장됩니다.
그래서 CHAR 컬럼은 % 써서 검색시 의도와 다르게 동작할 수 있습니다.
'%소파' 이렇게 검색해도 '가죽소파 ' 이건 못찾음
_ 기호
%이건 아무글자를 뜻하는데 _ 이것도 아무글자를 뜻합니다.
차이점이 있는데
% 이건 아무글자인데 글자수 제한이 없습니다. (0자도 포함)
근데 _ 이건 아무글자 1개를 뜻합니다.
그래서 정확히 글자수까지 포함해서 검색하고 싶으면 _ 쓰면 됩니다.
SELECT * FROM product
WHERE 상품명 LIKE '__소파'
하지만 좋다고 % 기호 많이 쓰면 성능저하가 일어날 수 있습니다.
OR, 등호, 부등호 쓰는게 가능한 경우 사용하도록 합시다.
%쓰면 인덱스 활용을 많이 못해서 찾을 때 오래걸리는 건데 자세한건 인덱스 원리 배울 때 알아봅시다.
Q1. 'Green'으로 시작해서 'chair'로 끝나는 상품명을 검색하려면?
Q2. 위처럼 상품명에 '소파' 가 들어있거나 'chair'가 들어있는 모든 상품을 검색해봅시다.
Q3. 상품명에 '소파'가 들어있는데 '나무'는 들어있지 않은 모든 상품을 검색해봅시다.
Last updated