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