>백엔드 개발 >PHP 문제 >PHP의 mysql 퍼지 쿼리 문에 문제가 있습니까?

PHP의 mysql 퍼지 쿼리 문에 문제가 있습니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-24 15:09:113010검색

php의 MySQL 퍼지 쿼리 문: 1. [%]는 모든 유형 및 길이의 문자와 일치할 수 있는 0개 이상의 문자를 나타냅니다. 2. [_]는 모든 단일 문자와 일치할 수 있는 단일 문자를 나타냅니다. [ []】 문자, 문자열 또는 범위를 지정합니다. 일치하는 개체는 그 중 하나여야 합니다.

PHP의 mysql 퍼지 쿼리 문에 문제가 있습니까?

PHP의 MySQL 퍼지 쿼리 문은 다음과 같습니다.

일반적인 퍼지 쿼리 문은 다음과 같습니다.

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

조건과 관련하여 SQL은 네 가지 일치 모드를 제공합니다.

1, %: 0 또는 여러 문자를 나타냅니다. . 어떤 종류와 길이의 문자도 일치할 수 있습니다. 경우에 따라 중국어인 경우에는 퍼센트 기호(%%)를 두 개 사용하여 표현해 주세요.

예를 들어

SELECT * FROM [user] WHERE u_name LIKE '%三%'

는 "Zhang San", "Zhang Cat San", "Three-legged Cat", "Tang Sanzang" 등과 같이 u_name에 "3"이 포함된 모든 레코드를 찾습니다.

또한 u_name에 "三"과 "cat"이 모두 포함된 레코드를 찾으려면 조건을 사용하세요

SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'

를 사용하는 경우 "세발고양이"로 검색할 수 있지만, 일치 조건 "Zhang Cat San"을 검색할 수 없습니다.

2,_: 단일 문자를 나타냅니다. 단일 임의 문자와 일치합니다. 표현식의 문자 길이를 제한하는 데 자주 사용됩니다.

예를 들어

SELECT * FROM [user] WHERE u_name LIKE '_三_'

는 u_name이 3자이고 중간 문자가 "三"인 "Tang Sanzang"만 찾습니다. is

 SELECT * FROM [user] WHERE u_name LIKE '三__';

이름이 세 글자이고 첫 글자가 "三"인 "세발 달린 고양이"만 찾습니다. 3, [ ]: 괄호 안에 나열된 문자 중 하나를 나타냅니다(정규 표현식과 유사). 문자, 문자열 또는 범위를 지정하고 일치하는 개체가 이들 중 하나여야 합니다.

예를 들어

SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'

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

예를 들어 [ ]에는 일련의 문자(01234, abcde 등)은 "0-4"로 축약될 수 있습니다. "a-e"

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

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

4, [^]: 괄호 안에 없음을 의미합니다. 목록 내의 단일 문자입니다. 해당 값은 []와 동일하지만 일치하는 개체가 지정된 문자가 아닌 다른 문자여야 합니다.

예를 들어

SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'

는 성이 "Zhang", "Li", "Wang"이 아닌 "Zhao San", "Sun San" 등을 검색합니다.

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

는 "Old 1"을 "Old"로 제외합니다. 4"를 찾아 "Old 5", "Old 6",...

5, 쿼리 내용에 와일드카드가 포함된 경우

와일드카드로 인해 특수 문자 "%", "_" 및 "["는 정상적으로 구현할 수 없습니다. 특수문자를 "[ ]"로 묶어서 정상적으로 쿼리할 수 있습니다. 이를 바탕으로 다음 함수를 작성합니다.

function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

관련 학습 권장 사항:

초보부터 마스터까지 PHP 프로그래밍

위 내용은 PHP의 mysql 퍼지 쿼리 문에 문제가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 작업 흐름 문제다음 기사:PHP 작업 흐름 문제