특정 필드에 대한 mysql 정규 일치 퍼지 쿼리
특정 필드를 쿼리할 때 때로는 특정 데이터 부분만 일치시키고 싶을 때가 있습니다. 예를 들어, 이 필드에 있는 모든 키워드가 일치하는지 쿼리하고 싶습니다. 기사에 존재하는 키워드, 우리가 자주 일치해야 하는 키워드, 특정 키워드 값을 일치시키고 쿼리하는 방법을 설명하겠습니다
SQL 퍼지 쿼리의 구문은
"SELECT 열 FROM 테이블 WHERE 열 LIKE ';패턴';"입니다.
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"를 찾습니다.
"-" 문자를 찾으려면 먼저 ';张三[-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
end function
추천 튜토리얼: mysql 비디오 튜토리얼
위 내용은 특정 필드를 쿼리하는 mysql 정규 일치 퍼지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!