Maison > Article > développement back-end > Problème avec l'instruction de requête floue mysql en php ?
Instruction de requête floue MySQL en PHP : 1. [%] représente 0 ou plusieurs caractères, qui peuvent correspondre à n'importe quel type et longueur de caractères ; 2. [_] représente n'importe quel caractère unique, qui peut correspondre à n'importe quel caractère ; caractère ;3. [[]] spécifie un caractère, une chaîne ou une plage et requiert que l'objet correspondant soit l'un d'entre eux.
Les instructions de requête floue MySQL en php sont :
Les instructions de requête floue générales sont les suivantes :
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
Concernant les conditions, SQL propose quatre modes de correspondance :
1, % : représente 0 ou plusieurs caractères. Peut correspondre à des caractères de n'importe quel type et longueur. Dans certains cas, s'il s'agit de chinois, veuillez utiliser des signes de deux pour cent (%%) pour l'exprimer.
Par exemple,
SELECT * FROM [user] WHERE u_name LIKE '%三%'
trouvera tous les enregistrements avec "trois" dans u_name "Zhang San", "Zhang Cat San", "Three-legged Cat", "Tang Sanzang", etc. .
De plus, si vous avez besoin de trouver des enregistrements contenant à la fois "三" et "cat" dans u_name, veuillez utiliser la condition et
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
Si vous utilisez
SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
, vous pouvez rechercher "Chat à trois pattes" a été trouvé, mais "Zhang Cat San" qui remplissait les conditions n'a pas pu être recherché.
2, _ : représente n'importe quel caractère. Correspond à un seul caractère arbitraire. Il est souvent utilisé pour limiter la longueur des caractères des expressions :
Par exemple,
SELECT * FROM [user] WHERE u_name LIKE '_三_'
ne trouve que "Tang Sanzang", donc u_name comporte trois caractères et le caractère du milieu est de trois caractères. "三";
Un autre exemple est
SELECT * FROM [user] WHERE u_name LIKE '三__';
recherchez uniquement "chat à trois pattes" de telle sorte que le nom ait trois caractères et que le premier caractère soit "三" ; 3, [ ] : Indique l'un des caractères répertoriés entre parenthèses (semblable à une expression régulière). Spécifiez un caractère, une chaîne ou une plage, exigeant que l'objet correspondant soit l'un d'entre eux.
Par exemple,
SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
trouvera "Zhang San", "Li San", "Wang San" (au lieu de "Zhang Li Wang San"
tel) ; car [ ] contient une série de caractères (01234, abcde, etc.), qui peuvent être abrégés en "0-4", "a-e"
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
trouvera "old 1", "old 2", ..., "Old 9" ;
4, [^] : représente un seul caractère non répertorié entre parenthèses. Sa valeur est la même que celle de [], mais elle nécessite que l'objet correspondant soit un caractère autre que le caractère spécifié.
Par exemple,
SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
trouvera "Zhao San", "Sun San", etc. qui ne sont pas nommés "Zhang", "Li", "Wang"
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';;
exclura "Old 1" à "Old 4", recherchera "Old 5", "Old 6", ...
5, lorsque le contenu de la requête contient des caractères génériques
En raison des caractères génériques, l'instruction de requête pour les caractères spéciaux "%", "_" et "[" ne peut pas être implémentée normalement. Cependant, les caractères spéciaux peuvent être interrogés normalement s'ils sont placés entre "[ ]". Sur cette base, nous avons écrit la fonction suivante :
function sqlencode(str) str=replace(str,"[","[[]") '此句一定要在最前 str=replace(str,"_","[_]") str=replace(str,"%","[%]") sqlencode=str end functionRecommandations d'apprentissage associées :
Programmation PHP de l'entrée à la maîtrise
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!