SQL LIKE 연산자 - 문자열 부분일치 검색 [ % / _ ]

LIKE 연산자는 문자열의 패턴을 검색하는 데 사용을 합니다

우리가 '라면'이라고 검색을 하면 정확하게 라면이라는 글 또는 사전의 내용이 검색되기도 하지만

동시에 '라면을 먹었다' '짜장라면' 등 라면이 들어간 다른 문자열들도 검색이 됩니다

라면 = 짜장라면 은 물론 다른 단어라 검색이 안되여야 하지만

LIKE 연산자를 사용하면 해당하는 단어만 있으면 검색이 됩니다

 

기본적인 사용법입니다

SELECT * FROM 테이블 WHERE 칼럼 LIKE 'PATTERN'

- 패턴에는 ( % )와 ( _ )가 사용되는데 ( % )는 '모든 문자'라는 의미이고  ( _ )는 '한 글자'라는 의미이다

 

실제로 사용하는 예를 보기 위해 아래 테이블을 준비했습니다

NAME PRICE AMOUNT
짜장라면 1000 4
스파게티 1000 4
라면 800 3
진라면 큰컵 1100 5
라면볶이 1500 2

 

SELECT * FROM TABLE WHERE NAME LIKE '%라면%'

-  NAME 칼럼에 데이터중 앞뒤에 무슨 글자가 오던지 '라면'이라는 문자가 있는 ROW를 출력합니다

NAME PRICE AMOUNT
짜장라면 1000 4
라면 800 3
진라면 큰컵 1100 5
라면볶이 1500 2

'라면' 글자가 없는 스파게티를 제외하고 다 출력이 됩니다

 

SELECT * FROM TABLE WHERE NAME LIKE '%라면'

-  NAME 칼럼에 데이터중 앞에 무슨 글자가 오던지 '라면'으로 끝나는 문자가 있는 ROW를 출력합니다

NAME PRICE AMOUNT
짜장라면 1000 4
라면 800 3

이렇게 출력이 되겠죠? 이제 어느 정도 이해가 됐을 거라 생각됩니다

 

SELECT * FROM TABLE WHERE NAME LIKE '라면%'

-  NAME 칼럼에 데이터중 뒤에 무슨 글자가 오던지 '라면'으로 시작하는 문자가 있는 ROW를 출력합니다

 

표를 안 보셔도 라면 / 라면복이 ROW가 출력될걸 쉽게 알 수 있을 거라 생각합니다

이제 ( _ ) 이 녀석도 사용해 보겠습니다 

SELECT * FROM TABLE WHERE LIKE '_라면%'

-  NAME 칼럼에 데이터중 뒤에는 아무 글자 오던 상관없이 맨 앞에 한 글자 뒤에 '라면' 글자가 있는 ROW를 출력합니다

NAME PRICE AMOUNT
진라면 큰컵 1000 4

'라면' 앞에 '진'이라는 글자 하나만 있는 진라면 큰 컵 ROW만 출력됩니다

 

SELECT * FROM TABLE WHERE NAME LIKE '__라면%' -- 언더바2개

-  이렇게 하면 앞에 두 글자가 와야 하기에 짜장라면 ROW가 출력됩니다

 

SELECT * FROM TABLE WHERE NAME LIKE '__라면__' -- 양쪽 언더바 2개

-  이렇게 하면 '라면' 문자 앞뒤로 2개의 문자가 있는 ROW가 출력이 돼야 하는데

-  해당하는 ROW가 없기에 아무것도 출력이 안됩니다

 

SELECT * FROM TABLE WHERE NAME LIKE '라면'

-  이렇게 검색하면 NAME 칼럼에서 '라면' 문자 그대로 가진 ROW만 출력이 됩니다

NAME PRICE AMOUNT
라면 1000 4

이런 결과가 출력이 됩니다

 

 

LIKE 연산자는 데이터를 찾을 때 잘 활용하시면 좋을 것 같습니다

이상으로 포스팅을 마치겠습니다

 

도움이 되셨다면 공감 버튼 부탁드려요~