Back-End

[MySQL] LIKE, NOT LIKE

무지맘 2023. 3. 31. 00:55

[예시에 쓰이는 테이블]


# first name이 J로 시작하는 사람들 찾기
select * from name where first like 'J%';

# 결과
person_id	first	middle	last
1		Jenny	Jeong	Smith
5		Jerry	Park	Miller

# last name이 s로 끝나는 사람들 찾기
select * from name where last like '%s';

# 결과
person_id	first	middle	last
2		Alice	Scarlet	Rogers
7		Lizy	Kang	Jones

# middle name이 4글자인 사람들 찾기
select * from name where middle like '____'; // _ 4개

# 결과
person_id	first	middle	last
5		Jerry	Park	Miller
7		Lizy	Kang	Jones
8		Ryan	John	Brown

[LIKE, NOT LIKE]

1. like는 특정 단어가 포함된 것을 찾을 때, not like는 포함되지 않은 것을 찾을 때 사용한다.

 

2. where절에 칼럼명 like 패턴 또는 칼럼명 not like 패턴 형태로 쓰인다.

- 찾고자 하는 패턴을 작은따옴표(' ')사이에 넣으면 된다.

 

3. like/not like를 여러 개 쓴다면 and, or로 연결하면 된다.


[패턴]

1. %: 0개 이상의 문자를 뜻한다.

- '가%'는 가로 시작하는 문자열을 뜻한다. 예) 가, 가방, 가로수

- '%다'는 다로 끝나는 문자열을 뜻한다. 예) 다, 하다, 우다다

- '% 나%'는 중간에 띄어쓰기 한 칸과 나가 있는 문자열을 뜻한다. 예) 나는 나비, 하기 나름

 

2. _: 문자 1개를 뜻한다.

- '_랑'은 랑 앞에 1글자가 있는 문자열을 뜻한다. 예) 너랑, 나랑

- '_영_'은 영 앞뒤로 1 글자씩 있는 문자열을 뜻한다. 예) 우영우, 환영해

 

3. 패턴에 작은 따옴표가 들어가야 할 경우 작은따옴표를 2번 쓴다.

- '%''s%'는 중간에 's가 있는 문자열을 뜻한다. 예) choonsik's sweet potato

 

4. 패턴에 %나 _를 써야 할 경우 이스케이프 문자(escape character)를 지정해 주면 된다.

-  '%할인중%' 같이 칼럼 s에서 해당 패턴의 문자열을 찾고 싶다면 where s like ''x%%x%' escape 'x'라고 쓰면 된다.

- 위의 예시의 경우, x 바로 뒤에 있는 %(첫 번째와 세 번째  %)는 % 그 자체를 나타내고, 두 번째 %는 0개 이상의 문자를 뜻하는 %가 된다.

- escape에 지정되는 문자는 x가 아니어도 상관없다.