본문 바로가기
programming/DataManage

mysql LIKE 와일드카드 사용하기 using mysql LIKE statement with wildcard

by 개코 - 개발과 코딩 2022. 6. 28.

SELECT 구문에서 사용되는 LIKE 구문은 와일드카드를 사용하여 검색단어를 확장할 수 있다. LIKE 구문과 함께 사용되는 와일드카드는 2가지로 % 와 _가 있다. %은 검색하고자 하는 단어가 포함된 것을 의미하며 _ 은 검색하고자 하는 단어의 추가적인 자릿수를 의미한다. 와일드카드는 단어의 앞, 뒤 또는 앞뒤로 붙어 검색할 단어를 확장한다.

mysql LIKE 와일드카드 사용하기
using mysql LIKE statement with wildcard

mysql에서 LIKE 구문을 사용할 때는 와일드카드를 사용하여 유연하게 데이터를 검색할 수 있다.

와일드카드는 문자열과 같은 패턴을 사용할 때 사용하는데 특히 자릿수 또는 단어의 길이 등 종류는 많다.

다만 특정 단어를 기준으로 와일드카드를 추가하여 단어의 패턴을 확장하거나 비슷한 패턴을 가진 데이터를 정의하는데 사용한다.

SELECT 구문에 사용되는 LIKE 에서 사용되는 와일드카드는 2가지로 % 와 _ 가 있다.

이 둘이 검색하고자 하는 단어에 어떻게 붙느냐에 따라 mysql 의 SELECT 구문의 검색결과는 달라진다.

LIKE 문과 와일드카드

mysql 의 SELECT 구문과 함께 사용하는 LIKE 구문은 특정 단어를 이용하여 데이터를 검색하는데 사용한다.

와일드카드는 LIKE 구문과 함께 사용하여 검색하고자 하는 단어를 확장하여 사용할 수 있는데 LIKE 구문과 함께 사용하는 와일드카드는 % 와 _ 을 같이 사용한다.

검색하고자 하는 특정 단어에 와일드카드 위치에 따라 검색결과는 달라지게 된다.

와일드카드는 다음과 같다.

  • %
    검색하고자 하는 단어의 앞 또는 뒤에 붙는다.
    검색하고자 하는 단어가 들어간 모든 단어를 찾게 된다.
  • _
    검색하고자 하는 단어의 앞 또는 뒤에 붙는다.
    검색하고자 하는 단어가 들어간 자릿수를 의미한다.
    _ 의 갯수는 자릿수이다.

아래는 와일드카드의 예시를 보여준다.

  • %단어
    - 단어로 끝나는 모든 데이터를 검색한다.
  • 단어%
    - 단어로 시작하는 모든 데이터를 검색한다.
  • %단어%
    - 단어가 포함된 모든 데이터를 검색한다.
  • _단어
    - 앞자리수가 1자리 포함되고 단어로 끝나는 데이터를 검색한다.
  • 단어_
    - 단어로 시작하고 뒷자리수가 1자리 포함된 데이터를 검색한다.
  • _단어_
    - 앞에 1자리, 뒤에 1자리가 추가되고 단어가 포함된 데이터를 검색한다.

샘플코드

LIKE 구문과 와일드카드를 사용하여 SELECT 검색을 하는 mysql 예제를 만들어 본다.

SELECT 구문에서 사용되는 LIKE 구문은 특정 단어를 검색하는데 사용되며 와일드카드인 % 와 _ 을 사용하면 검색하고자 하는 단어를 확장할 수 있다.

코드를 보자.

/** tb_sample 테이블을 생성 */
CREATE TABLE tb_sample (
	idx INT,
	company VARCHAR(250),
	sell INT,
	title VARCHAR(250),
	content TEXT,
	insert_date DATETIME,
	update_date DATETIME
)
;

/** tb_sample 테이블에 데이터 추가  */
INSERT INTO tb_sample ( idx, company, sell, title, content, insert_date, update_date )
VALUES( '1', '현대자동차', 10000, NULL, '내용1', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, sell, title, content, insert_date, update_date )
VALUES( '2', '기아자동차', 10000, '제목2', NULL, NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, sell, title, content, insert_date, update_date )
VALUES ( '3', '현대자동차', 10000, NULL, '내용3', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, sell, title, content, insert_date, update_date )
VALUES ( '4', '기아자동차', 10000, '제목4', NULL, NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, sell, title, content, insert_date, update_date )
VALUES ( '5', '쌍용자동차', 10000, NULL, '내용5', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, sell, title, content, insert_date, update_date )
VALUES ( '6', '에디슨모터스', 10000, NULL, '내용6', NOW(), NOW() )
;

/** tb_sample 테이블 조회  */
SELECT * FROM tb_sample
 WHERE company LIKE '%모터스'
;

SELECT * FROM tb_sample
 WHERE company LIKE '에디슨%'
;

SELECT * FROM tb_sample
 WHERE company LIKE '%모터%'
;

SELECT * FROM tb_sample
 WHERE company LIKE '___모터스'
;

SELECT * FROM tb_sample
 WHERE company LIKE '에디슨___'
;

SELECT * FROM tb_sample
 WHERE company LIKE '_디슨모터_'
;

/** tb_sample 테이블 데이터 삭제  */
DELETE FROM tb_sample
;

/** tb_sample 테이블 데이터 완전 삭제  */
TRUNCATE tabLE tb_sample
;

/** tb_sample 테이블 삭제  */
DROP TABLE tb_sample
;

/*-----*/

코드는 길지만 중간에 있는 LIKE 구문만 확인해 보면 된다.

모든 결과는 같다.

다만 와일드 카드인 % 와 _ 을 어떻게 사용했느냐가 중요하다.

와일드 카드는 검색하고자 하는 단어를 확장하는 기능을 하고 있지만 % 과 _ 의 기능을 상기하자.

%는 특정단어라 들어간 모든 단어를 검색한다.

_ 은 특정단어가 들어간 자리수를 증가시켜 검색한다.

반응형

댓글