MySQL 와일드카드 튜토리얼: Like, NOT Like, Escape, ( % ), ( _ )
무엇인가 MySQL 와일드카드?
MySQL 와일드 카드 복잡한 기준과 일치하는 데이터를 검색하는 데 도움이 되는 문자입니다. 와일드카드는 LIKE 비교 연산자 또는 NOT LIKE 비교 연산자와 함께 사용됩니다.
와일드카드를 사용하는 이유는 무엇입니까?
SQL을 사용하는 데 익숙하다면 SELECT 및 WHERE 절을 사용하여 복잡한 데이터를 검색할 수 있다고 생각할 수 있습니다. 그러면 왜 와일드카드를 사용합니까?
그 질문에 답하기 전에 예를 하나 살펴보겠습니다. Myflix 비디오 라이브러리의 마케팅 부서가 텍사스 시에서 마케팅 프로모션을 진행했고 회원 수에 대한 피드백을 받고 싶어한다고 가정해 보겠습니다.
텍사스에서 등록한 경우 다음 SELECT 명령문을 WHERE 절과 함께 사용하여 원하는 정보를 얻을 수 있습니다.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
위의 쿼리에서 볼 수 있듯이 "WHERE 절"는 복잡해집니다. 그러나 와일드카드를 사용하면 아래에 표시된 스크립트와 같은 간단한 것을 사용할 수 있으므로 쿼리가 간소화됩니다.
SELECT * FROM members WHERE postal_address like '% TX';
즉, 와일드카드를 사용하면 강력한 검색 엔진을 데이터 기반 애플리케이션으로 개발할 수 있습니다.
와일드카드 유형
% 백분율
% 백분율 문자는 패턴을 지정하는 데 사용됩니다. 0개 이상의 문자. 기본 구문은 다음과 같습니다.
SELECT statements... WHERE fieldname LIKE 'xxx%';
여기를 클릭하십시오.
- "SELECT 문…”은 표준 SQL SELECT 명령입니다.
- “WHERE”는 필터를 적용하는 데 사용되는 키워드입니다.
- "LIKE"는 와일드카드와 함께 사용되는 비교 연산자입니다.
- 'xxx'는 단일 문자 이상과 같은 지정된 시작 패턴이고 "%"는 0부터 시작하는 모든 문자 수와 일치합니다.
위의 설명을 충분히 이해하기 위해 실제 예를 살펴보겠습니다.
제목의 일부로 "code"라는 단어가 포함된 모든 영화를 가져오려면 백분율 와일드카드를 사용하여 "code"라는 단어의 양쪽에서 패턴 일치를 수행한다고 가정합니다. 다음은 원하는 결과를 얻는 데 사용할 수 있는 SQL 문입니다.
SELECT * FROM movies WHERE title LIKE '%code%';
위 스크립트를 실행하면 MySQL 워크 벤치 myflixdb에 대해 아래와 같은 결과를 제공합니다.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
검색 키워드 "code"가 제목의 시작이나 끝 부분에 나타나더라도 결과 집합에는 여전히 반환됩니다. 이는 우리 코드가 시작 부분에 임의 개수의 문자를 포함하고 끝 부분에 임의 개수의 문자가 뒤따르는 패턴 “code”와 일치하기 때문입니다.
이제 검색 기준 시작 부분에만 백분율 와일드카드를 포함하도록 위의 스크립트를 수정해 보겠습니다.
SELECT * FROM movies WHERE title LIKE '%code';
위 스크립트를 실행하면 MySQL myflixdb에 대한 워크벤치는 아래와 같은 결과를 제공합니다.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
데이터베이스에서 하나의 레코드만 반환되었습니다. 이는 코드가 영화 제목 시작 부분의 문자 수와 일치하고 "code" 패턴으로 끝나는 레코드만 가져오기 때문입니다.
이제 일치시킬 지정된 패턴의 끝으로 백분율 와일드카드를 이동해 보겠습니다. 수정된 스크립트는 아래에 나와 있습니다.
SELECT * FROM movies WHERE title LIKE 'code%';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
데이터베이스에서 하나의 레코드만 반환되었습니다. 이는 우리의 코드가 “code” 패턴으로 시작하고 그 뒤에 임의의 문자 수가 오는 모든 제목과 일치하기 때문입니다.
_ 밑줄 와일드카드
밑줄 와일드카드는 다음과 같은 용도로 사용됩니다. 정확히 한 문자와 일치. x가 임의의 값이 될 수 있는 정확히 하나의 문자인 200x년에 개봉된 모든 영화를 검색한다고 가정해 보겠습니다. 이를 달성하기 위해 밑줄 와일드카드를 사용합니다. 아래 스크립트는 "200x" 연도에 개봉된 모든 영화를 선택합니다.
SELECT * FROM movies WHERE year_released LIKE '200_';
위 스크립트를 실행하면 MySQL myflixdb에 대한 워크벤치는 아래와 같은 결과를 제공합니다.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
개봉 연도에 어떤 캐릭터든 팔로어가 200개인 영화만 결과 세트에 반환되었습니다. 이는 밑줄 와일드카드가 패턴 200 뒤에 단일 문자가 오는 것과 일치하기 때문입니다.
같지 않은
NOT 논리 연산자는 와일드카드와 함께 사용하여 지정된 패턴과 일치하지 않는 행을 반환할 수 있습니다.
200x년에 개봉되지 않은 영화를 구하고 싶다고 가정해 보겠습니다. NOT 논리 연산자와 밑줄 와일드카드를 함께 사용하여 결과를 구합니다. 아래는 이를 수행하는 스크립트입니다.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
8 | Underworld-Awakeninh | Michahel Eal | 2012 | 6 |
출시된 해에 200으로 시작하지 않는 영화만 결과 집합에 반환되었습니다. 이는 와일드카드 패턴 검색에서 NOT 논리 연산자를 사용했기 때문입니다.
이스케이프 키워드
ESCAPE 키워드는 다음과 같이 사용됩니다. 이스케이프 패턴 일치 문자 예를 들어 (%) 백분율과 밑줄(_)이 데이터의 일부를 구성하는 경우입니다.
사용할 수 있는 문자열 “67%”를 확인한다고 가정해 보겠습니다.
LIKE '67#%%' ESCAPE '#';
영화 “67% Guilty”를 검색하려면 아래 표시된 스크립트를 사용하면 됩니다.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
두 개의 "를 주목하세요%%” LIKE 절의 첫 번째 빨간색 “%”는 검색할 문자열의 일부로 처리됩니다. 다른 하나는 뒤에 오는 문자 수를 일치시키는 데 사용됩니다.
다음과 같은 쿼리를 사용해도 동일한 쿼리가 작동합니다.
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
요약
- 좋아요 & 와일드카드는 복잡한 패턴과 일치하는 데이터를 검색하는 데 도움이 되는 강력한 도구입니다.
- 백분율, 밑줄 및 문자 목록을 포함하는 여러 가지 와일드카드가 있습니다(지원되지 않음). MySQL ) 그 중에서도
- 백분율 와일드카드는 0부터 시작하는 임의의 수의 문자를 일치시키는 데 사용됩니다.
- 밑줄 와일드카드는 정확히 하나의 문자와 일치하는 데 사용됩니다.