데이터 처리 도구/SQL

[MySQL] String Functions and Operators (2)

yourhm 2022. 8. 27. 23:25

문자열 패턴 찾기

WHERE 컬럼명 LIKE '문자열 패턴'

: 특정 컬럼에서 원하는 문자열 패턴과 일치하는 문자열 데이터를 반환해라.

 

WHERE 컬럼명 NOT LIKE '문자열 패턴'

: 특정 컬럼에서 원하는 문자열 패턴과 일치하지 않는 문자열 데이터를 반환해라.

 

 

1.  _  (언더스코어)

: 한글자 와일드 카드. _ 하나당 하나의 글자를 의미. 즉 몇 개의 문자가 포함되는지 알려주는 조건.

 

SELECT *
FROM Users
WHERE city LIKE 'C______'

• 'C______' → 'C' 로 시작한 다음에 6개의 문자가 따라나오는 값 조회하기

 

 

2.  %  (퍼센트)

: 와일드 카드. %가 해당하는 부분은 어떤 것이 들어가도 상관없다는 의미.

 

SELECT *
FROM Users
WHERE city LIKE 'Ch%'

• 'Ch%' → 'Ch'로 시작하는 값을 조회하기

'%e%' → 앞이나 뒤에 어떤 문자가 들어가도 혹은 안들어가도 상관없으니, 'e'가 하나라도 포함되어 있다면 그 값을 조회하기

'Chungju' → '%' 기호 없이 바로 문자열을 써도 실행이 가능하지만, 이렇게 명확한 문자열과 일치하는 값을 조회하고 싶을 대는 비교연산자 '=' 를 사용하는 것이 더 좋다. 왜냐하면 Like 보다 비교연산자 '=' 를 사용하여 데이터를 검색하는 속도가 훨씬 빠르기 때문이다. 양이 적은 학습용 데이터에서는 큰 차이를 느낄 수 없지만 실무에서 양이 많은 데이터를 다룰 때는 실행 속도가 크게 차이날 수 있다.

 

SELECT *
FROM Users
WHERE profit LIKE '__\%'

'%' 를 와일드카드가 아닌 조회할 조건 안에 들어가는 문자열로서 사용하고 싶을 때는 역슬래쉬(\)를 앞에 써주면 와일드카드의 기능이 해제된다.

 이런 것들을 ‘이스케이프’ 라고 한다. 예약어를 탈출한다, 즉 예악어를 예약어로서의 의미가 아니라 다른 의미로 사용하겠다 라는 의미. 와일드카드 이스케이프 방식은 데이터베이스 마다 조금 다를 수 있다. (본 글은 MYSQL 기준으로 설명한다.)

 위의 예시는 profit 열에서 “두 자리수%” 로 된 값을 조회하는 것이다.