MySQL 와일드카드 튜토리얼: Like, NOT Like, Escape, ( % ), ( _ )

MySQL 와일드카드란 무엇입니까?

MySQL 와일드카드 com과 일치하는 데이터 검색을 도와주는 문자입니다.plex 기준. 와일드카드는 LIKE 비교 연산자 또는 NOT LIKE 비교 연산자와 함께 사용됩니다.

와일드카드를 사용하는 이유는 무엇입니까?

SQL 사용에 익숙하다면 어떤 com이나 검색해도 된다고 생각할 수도 있습니다.plex SELECT 및 WHERE 절을 사용한 데이터. 그렇다면 왜 와일드카드를 사용합니까?

해당 질문에 답하기 전에 예를 살펴보겠습니다. Myflix 비디오 라이브러리의 마케팅 부서가 텍사스 시에서 마케팅 프로모션을 진행했으며 회원 수에 대한 피드백을 받고 싶다고 가정해 보겠습니다.

텍사스에서 등록한 경우 다음을 사용할 수 있습니다.wing 원하는 정보를 얻으려면 WHERE 절과 함께 SELECT 문을 사용하세요.

SELECT * FROM members WHERE postal_address = 'Austin , TX' OR  postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';

위의 쿼리에서 볼 수 있듯이 "WHERE 절"는 com이 됩니다.plex. 그러나 와일드카드를 사용하면 아래 표시된 스크립트와 같이 간단한 것을 사용할 수 있으므로 쿼리가 단순화됩니다.

SELECT * FROM  members  WHERE postal_address  like '% TX';

즉, 와일드카드를 사용하면 강력한 검색 엔진을 데이터 기반 애플리케이션으로 개발할 수 있습니다.

와일드카드 유형

% 백분율

% 백분율 문자는 패턴을 지정하는 데 사용됩니다. 0개 이상의 문자. 그것은 다음과 같은 내용을 가지고 있습니다wing 기본 구문.

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';

myflixdb에 대해 MySQL 워크벤치에서 위 스크립트를 실행하면 아래와 같은 결과가 표시됩니다.

movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

데이터베이스에서 하나의 레코드만 반환되었습니다. 이는 코드가 영화 제목 시작 부분의 문자 수와 일치하고 "code" 패턴으로 끝나는 레코드만 가져오기 때문입니다.

이제 일치하도록 지정된 패턴의 끝으로 백분율 와일드카드를 이동해 보겠습니다. 수정된 스크립트는 아래와 같습니다.

SELECT * FROM movies WHERE title LIKE 'code%';
myflixdb에 대해 MySQL 워크벤치에서 위 스크립트를 실행하면 아래와 같은 결과가 표시됩니다.
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_';

myflixdb에 대해 MySQL 워크벤치에서 위 스크립트를 실행하면 아래와 같은 결과가 표시됩니다.

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 '=';

요약

  • Like & Wildcards는 com과 일치하는 데이터를 검색하는 데 도움이 되는 강력한 도구입니다.plex 패턴.
  • 백분율, 밑줄 및 문자 목록(MySQL에서는 지원되지 않음)을 포함하는 다양한 와일드카드가 있습니다.
  • 백분율 와일드카드는 0부터 시작하는 임의의 수의 문자를 일치시키는 데 사용됩니다.
  • 밑줄 와일드카드는 정확히 하나의 문자와 일치하는 데 사용됩니다.