>  기사  >  백엔드 개발  >  특정 필드에 대한 mysql 정규 일치 퍼지 쿼리

특정 필드에 대한 mysql 정규 일치 퍼지 쿼리

silencement
silencement앞으로
2020-01-27 21:18:213394검색

특정 필드에 대한 mysql 정규 일치 퍼지 쿼리

특정 필드를 쿼리할 때 특정 데이터 부분만 일치시키려는 경우가 있습니다. 예를 들어 특정 키워드가 존재하는지 확인하기 위해 이 기사의 모든 키워드를 쿼리하려면 일치해야 하는 경우가 많습니다. 특정 키워드 값에 대한 매칭 쿼리를 설명하겠습니다

SQL 퍼지 쿼리의 구문은

"SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE ';pattern';"입니다.

SQL은 네 가지 일치 모드를 제공합니다.

1. %는 0개 이상의 문자를 나타냅니다. 다음 명령문:

SELECT * FROM user WHERE name LIKE ';%三%';

은 "Zhang San", "Three-legged Cat", "Tang Sanzang"과 같이 "3"이 포함된 모든 이름을 찾습니다. , 등 ;

2. _은 단일 문자를 나타냅니다. 명령문:

SELECT * FROM user WHERE name LIKE ';_三_';

이름이 세 글자이고 중간 글자가 "三"인 "Tang Sanzang"만 찾습니다.

SELECT * FROM user WHERE name LIKE ' ;三__';

이름이 세 글자이고 첫 글자가 "三"이 되도록 "세다리 고양이"만 찾습니다.

3 [ ]는 괄호 안에 나열된 문자 중 하나를 나타냅니다(일반과 유사). 표현). 명령문:

SELECT * FROM user WHERE name LIKE ';[张文王]三';

은 "Zhang San", "Li San", "Wang San"("Zhang Li Wang San" 대신)을 찾습니다.

[ ]에 일련의 문자(01234, abcde 등)가 포함된 경우 "0-4", "a-e"로 축약할 수 있습니다.

SELECT * FROM user WHERE name LIKE ';老[1-9] ' ;

는 "Old 1", "Old 2", ..., "Old 9"를 찾습니다.

"-" 문자를 찾으려면 먼저 입력하세요: ';Zhang San[-1 -9] ';

4. [^ ]는 괄호 안에 나열되지 않은 단일 문자를 나타냅니다. 명령문:

SELECT * FROM user WHERE name LIKE ';[^Zhang Liwang]三';

은 성이 "Zhang", "Li" 및 "Wang" 등이 아닌 "Zhao San" 및 "Sun San"을 찾습니다. ;

SELECT * FROM user WHERE name LIKE ';老[^1-4]';

"old 1"에서 "old 4"를 제외하여 "old 5", "old 6",..., "올드 9".

! 마지막으로 포인트입니다!

와일드카드로 인해 특수 문자 "%", "_", "[" 및 "';"에 대한 쿼리 문은 정상적으로 구현될 수 없습니다. 그러나 특수 문자를 "[ ]"로 묶으면 정상적으로 쿼리할 수 있습니다. 이를 바탕으로 다음 함수를 작성합니다:

function sqlencode(str)

str=replace(str,"';","';';")

str=replace(str,"["," [[ ]") ';이 문장이 먼저 와야 합니다

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

끝 함수

위 내용은 특정 필드에 대한 mysql 정규 일치 퍼지 쿼리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 www.liqingbo.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제