Maison  >  Article  >  développement back-end  >  requête floue de correspondance régulière mysql pour un certain champ

requête floue de correspondance régulière mysql pour un certain champ

silencement
silencementavant
2020-01-27 21:18:213384parcourir

requête floue de correspondance régulière mysql pour un certain champ

Lorsque nous interrogeons un certain champ, nous souhaitons parfois uniquement faire correspondre une certaine donnée. Par exemple, si nous voulons interroger tous les mots-clés de cet article pour voir si un certain élément de données est défini. le mot-clé existe, nous avons souvent besoin de correspondance, expliquons comment faire correspondre et interroger une certaine valeur de mot-clé

La syntaxe de la requête floue SQL est

"SELECT column FROM table WHERE column LIKE ';pattern' ;".

SQL propose quatre modes de correspondance :

1 % représente 0 caractère ou plus. L'instruction suivante :

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

changera le nom en "Zhang San", "Chat à trois pattes", "Tang Sanzang ", etc. Recherchez tous les caractères avec "trois" ;

2. _ représente n'importe quel caractère unique. Déclaration :

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

Trouver uniquement "Tang Sanzang" dont le nom comporte trois caractères et le caractère du milieu est "三" ;

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

Trouver uniquement "chat à trois pattes" pour que le nom comporte trois caractères et que le premier caractère soit "三" ;

3. [ ] représente l'un des caractères répertoriés entre parenthèses (semblable à une expression régulière). Déclaration :

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

trouvera "Zhang San", "Li San", "Wang San" (et non "Zhang Li Wang San");

Si [ ] contient une série de caractères (01234, abcde, etc.), il peut être abrégé en "0-4", "a-e"

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

trouvera "old 1", "old 2", ..., "old 9"; > Si vous recherchez le caractère "-", veuillez le mettre en premier : ';张三[-1-9]';

4 [^ ] représente un seul caractère non répertorié entre parenthèses. Déclaration :

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

trouvera "" dont le nom de famille n'est pas "Zhang", "Li" ou "Wang " Zhao San", "Sun San", etc. ;

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

exclura "老1" pour "老4" "Recherchez "Old 5", "Old 6",..., "Old 9".

! La dernière chose est le point !

En raison des caractères génériques, nos instructions de requête pour les caractères spéciaux "%", "_", "[", "';" ne peuvent pas être implémentées normalement, et les caractères spéciaux peuvent être placés entre "[ ]" être interrogé normalement. Sur cette base, nous écrivons la fonction suivante :

function sqlencode(str)

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

str =replace(str,"[","[[]") ';Cette phrase doit venir en premier

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

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

sqlencode=str

fin de fonction

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer