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 구문만 확인해 보면 된다.
모든 결과는 같다.
다만 와일드 카드인 % 와 _ 을 어떻게 사용했느냐가 중요하다.
와일드 카드는 검색하고자 하는 단어를 확장하는 기능을 하고 있지만 % 과 _ 의 기능을 상기하자.
%는 특정단어라 들어간 모든 단어를 검색한다.
_ 은 특정단어가 들어간 자리수를 증가시켜 검색한다.
'programming > DataManage' 카테고리의 다른 글
mysql 프로시저 만드는 방법 how to make mysql procedure (0) | 2022.10.08 |
---|---|
mysql 반복문 while 사용 방법 더미 테스트 데이터 만들기에 유용한 팁 (0) | 2022.10.03 |
mysql LIKE 구문 사용하여 특정 구문 찾기 using WEHE LIKE statement (0) | 2022.06.22 |
mysql 숫자 관련 함수 사용 COUNT SUM AVG using mysql number functions (0) | 2022.06.18 |
mysql 최대값 최소값 함수 사용하기 using mysql max min function (0) | 2022.06.16 |
댓글