수수한 코딩세상

[DB] 간단한 검색 기능 LIKE, %, _ 본문

수수한 코딩세상/DB

[DB] 간단한 검색 기능 LIKE, %, _

수수한 코딩열공생 2024. 6. 24. 17:18
<개발 도구>
DBMS : MySQL
Editor : DBeaver

 

필터링을 할 때에는 WHERE 문을 사용하여 원하는 행을 찾아낼 수 있습니다. 데이터 안에서 문자로 검색을 하고 싶을 때는 한계가 있습니다. 그럴 때 사용 할 수 있는 간단한 검색 기능 연산자 LIKE, %, _에 대해서 공부한 내용을 정리해보려 합니다.

 

간단한 검색 기능 (LIKE, %, _)

▶ 찾고싶은 문자가 들어가 있는 데이터 출력 LIKE '%단어%'

SELECT * FROM 테이블명 WHERE 상품명 LIKE '%소파%';

찾고 싶은 단어가 포함된 데이터를 출력하기 위해 검색하려면 `컬럼명 LIKE '%검색할 단어%'` 형식으로 작성하면 됩니다.

LIKE : 비교연산자

% : 아무 문자 (wildcard)

☞ 와일드 문자 (wildcard character)
컴퓨터에게 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 기호입니다. 와일드 문자는 언어에 따라서 정해놓은 기호가 다르며 어느 곳에서 사용하느냐에 따라서 약간의 차이가 있습니다.
주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 사용합니다.

위의 코드를 예로 하면
'%소파%' : 아무 문자 + 소파 + 아무 문자 형태를 검색해 줘
'%소파' : 아무 문자 + 소파 형태를 검색해 줘
'소파%' : 소파 + 아무 문자형태를 검색해 줘
라는 뜻입니다.

 

▶ 와일드 문자 _ 사용 LIKE '_소파'

SELECT * FROM 테이블명 WHERE 상품명 LIKE '_소파';

와일드 문자로 `%` 말고도 `_`가 있습니다.

_ : 아무 문자 1글자

라는 뜻입니다.

_의 개수에 따라서 검색하는 데이터가 달라지게 됩니다.
예를 들어
'_소파' : 소파로 끝나고 앞에 1글자만 있는 데이터 검색해 줘
'__소파' : 소파로 끝나고 앞에 2글자만 있는 데이터 검색해 줘
'소파_' : 소파로 시작하고 뒤에 1글자만 있는 데이터 검색해 줘

라는 뜻입니다.

 

※ 참고사항

  • %를 문자 앞에 사용하여 검색할 경우 성능이 저하될 수 있습니다.
    왜냐하면 문자에 %를 사용하면 데어터가 많을 경우 검색성능을 향상시키기 위해 사용하는 index기능을 사용할 수 없기 때문입니다.
  • %,_는 문자 데이터를 검색할 때 사용하는 연산자 이기 때문에 문자 컬럼에만 사용 가능합니다.
  • LIKE, % 연산자는 VARCHAR() 컬럼에 주로 사용합니다.
    CHAR() 컬럼에도 사용가능하지만 사용할 때 주의 하여야 합니다. 예를 들어 CHAR(6)일 때 '가죽소파'를 저장해도 '가죽소파__'으로 공백으로 빈자리를 다 채워서 저장하기 때문에 공백도 문자 취급을 하는 MySQL에서는 '%소파'로 문자를 검색 시 공백문자로 인해 검색이 불가능합니다. 그래서 '%소파%' 이런 식으로 검색해야 합니다.

 

이상 간단한 검색기능 LIKE, %, _ 연산자에 대해 정리해 보았습니다.

 


Reference

해당 글은 애플코딩님의 강의를 보고 정리한 내용입니다.

https://codingapple.com/course/sql-and-database/

 

한 번에 끝내는 SQL & Database - 코딩애플 온라인 강좌

SQL은 관계형 데이터베이스에서 데이터를 입출력할 때 사용하는 언어입니다.  관계형 데이터베이스를 다루는 곳에서 백엔드 개발 잘하고 싶다면 SQL을 잘 알아두도록 합시다.  실은 SQL을 개발자

codingapple.com