놀고 싶어요

[DataBase] LIKE 검색 시, %와 _ 검색 하는 방법 본문

Database

[DataBase] LIKE 검색 시, %와 _ 검색 하는 방법

챌린지 2021. 9. 6. 18:33

SQL에서 =은 데이터가 일치해야만 필터링이 된다.

LIKE 를 통해서 해당 단어를 포함하는 데이터 모두 필터링할 수 있는데,  %와 _을 사용한다.

 

만약 FRUIT 라는 TABLE에 다음과 같이 데이터가 있다고 가정하자.

PID  PNAME
100  APPLE
200  GRAPE
300  PEAR
400  WATERMELON
500  MANGO

 

 

SELECT * FROM FRUIT WHERE PNAME = 'AP';

 

아무 것도 조회되지 않는다.

 

SEELCT * FROM FRUIT WHERE PNAME LIKE '%AP%';

결과값: APPLE, GRAPE

 

SEELCT * FROM FRUIT WHERE PNAME LIKE 'AP%';

결과값: APPLE

 

%는 해당 index부터 단어가 있을 수도 없을 수도 있다는 의미로, %를 꼭 써줘야만 해당 단어를 포함하는 단어가 검색이 된다!

 

SEELCT * FROM FRUIT WHERE PNAME LIKE '__A%'; -- _ 두 개 있음

결과값: GRAPE, PEAR

 

_는 내가 찾고 싶은 단어 앞에 _ 수 만큼 글자가 있어야 함을 의미한다.

_가 2개 이므로 _가 0개인 APPLE과 1개인 WATERMELON, MANGO를 제외하고 GRAPE와 PEAR만 검색이 된다.

 

 

 

만약 내가 찾고 싶은 단어에 %와 _가 포함되어 있다면??

SELECT * FROM FRUIT WHERE PNAME LIKE 'A\%%'; -- A%로 시작하는 PNAME 데이터를 가져온다.

SELECT * FROM FRUIT WHERE PNAME LIKE 'A\_%'; -- A_로 시작하는 PNAME 데이터를 가져온다.

%와 _ 개수 만큼 각각 앞에 \를 사용하면 된다.

 

 

혹은

 

SELECT * FROM FRUIT WHERE PNAME LIKE 'A@_%' ESCAPE '@'; -- A_로 시작하는 PNAME 데이터를 가져온다.
-- '@'가 아닌 다른 글자도 가능하지만, 데이터에도 해당 글자가 있으면 안된다.

ESCAPE를 사용하여 검색해도 된다.

@, # 등.. 여러 문자가 가능하지만, 만약 데이터안에 해당 문자가 있으면 그 문자도 빠지므로 주의하자

'Database' 카테고리의 다른 글

Oracle 테이블/컬럼 조회하기  (0) 2021.05.04