Maison  >  Article  >  base de données  >  Analyse de l'utilisation du remplacement d'expression régulière à l'aide de replace et regexp dans MySQL

Analyse de l'utilisation du remplacement d'expression régulière à l'aide de replace et regexp dans MySQL

黄舟
黄舟original
2017-03-15 17:17:023967parcourir

Cet article présente principalement l'utilisation du remplacement et de l'expression rationnelle dans MySQL pour remplacer l'expression régulière, et analyse les techniques d'utilisation et les techniques du remplacement et de l'expression régulière regexp en combinaison avec des exemples spécifiques . Pour des notes connexes, les amis dans le besoin peuvent se référer à

Cet article décrit l'utilisation de replace et regexp pour le remplacement d'expressions régulières dans MySQL. Partagez-le avec tout le monde pour référence, les détails sont les suivants :

Aujourd'hui, un ami m'a demandé si je pouvais modifier tous les formats similaires à "./uploads/110100_cityHotel_Beijing Fu Luxury Hotel.jpg" trouvés dans la base de données. Il est au format "./uploads/110100cityHotelBeijing Fu Luxury Hotel.jpg". Je n'ai jamais traité les données de cette manière, mais je sais que MySQL peut utiliser le remplacement et que les expressions régulières peuvent également le faire.

Comment faire ?

Nous n'avons besoin que d'une telle déclaration,

Le code est le suivant :

update master_data.md_employee set name=replace(name,"_",'') where id = 825;

-- note replace (Nom du champ, "Caractères à remplacer", "Caractères à remplacer"), ça y est.

Dans Mysql, le remplacement et l'expression rationnelle réalisent principalement le remplacement des données via des instructions SQL.

Parlons d’abord de l’utilisation spécifique de replace.

Utilisation du remplacement de mysql

1.replace into

Le code est le suivant :

replace into table (id,name) values('1′,'aa'),('2′,'bb')

Cette instruction La fonction est d'insérer deux enregistrements dans la table. Si l'identifiant de la clé primaire est 1 ou 2 et n'existe pas,

est équivalent à

Le code est le suivant :

insert into table (id,name) values('1′,'aa'),('2′,'bb')
Si la même valeur existe, elle ne sera pas

Insérer des données

2.remplace(<a href="http://www.php.cn/wiki%20/60.html" target="_blank">object<p>,search,replace)</p></a>replace(<a href="http://www.php.cn/wiki/60.html" target="_blank">object</a>,search,replace)Remplacez toutes les occurrences de recherche dans l'objet par replace


Le code est le suivant :

select replace(&#39;www.jb51.net&#39;,&#39;w&#39;,&#39;Ww&#39;)
Exemple : Remplacez aa dans le champ nom du tableau par bb


Le code est le suivant :

update table set name=replace(name,&#39;aa&#39;,&#39;bb&#39;)
La correspondance de modèles fournie par MySQL

AutresType utilise des expressions régulières étendues.

Lorsque vous testez des correspondances sur de tels modèles, utilisez les opérateurs REGEXP et NOT REGEXP (ou RLIKE et NOT RLIKE, qui sont des synonymes).

Certains caractères qui étendent les expressions régulières sont :

· « . » correspond à n'importe quel caractère.

· Classe de caractères "[...]" correspond à n'importe quel caractère entre crochets. Par exemple, "[abc]" correspond à "a", "b" ou "c". Pour nommer une plage de caractères, utilisez un "-". "[a-z]" correspond à n'importe quelle lettre, tandis que "[0-9]" correspond à n'importe quel chiffre.

· " * " correspond à zéro ou plusieurs caractères qui le précèdent. Par exemple, "x*" correspond à n'importe quel nombre de caractères "x", "[0-9]*" correspond à n'importe quel nombre de chiffres et ".*" correspond à n'importe quel nombre de caractères.

Le modèle correspond si le modèle REGEXP correspond n'importe où dans la valeur testée (ceci est différent de la correspondance de modèle LIKE, qui correspond uniquement à la valeur entière).

Pour positionner un motif de manière à ce qu'il corresponde au début ou à la fin de la valeur testée, utilisez "^" au début du motif ou "$" à la fin du modèle.

Pour illustrer le fonctionnement des expressions régulières étendues, réécrivons la requête LIKE

présentée ci-dessus en utilisant REGEXP  :

1. Afin de découvrir ce qui commence par " d Pour les noms commençant par ", utilisez "^" pour faire correspondre le début du nom :


Le code est le suivant :

SELECT * FROM master_data.md_employee WHERE name REGEXP &#39;^d&#39;;
Un tel ensemble de résultats n'est pas le cas -sensible, si vous souhaitez forcer. Pour rendre la comparaison REGEXP sensible à la casse, utilisez le mot-clé BINARY pour transformer l'une des

chaînes en chaîne binaire. Cette requête correspond uniquement à la première lettre du nom, « d » minuscule.

Le code est le suivant :

SELECT * FROM master_data.md_employee WHERE name REGEXP BINARY&#39;^d&#39;;
Pour rechercher des noms se terminant par "love", utilisez "$" pour faire correspondre la fin du nom :


Le code est le suivant :

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;love$&#39;;
Pour trouver les noms qui contiennent un "w", utilisez la requête suivante :


Le code est le suivant :

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;w&#39;;
Depuis if Une expression régulière qui apparaît n'importe où dans une valeur qui correspond au modèle élimine le besoin de placer des caractères génériques de chaque côté du modèle dans la requête précédente pour qu'il corresponde à la valeur entière, comme si vous utilisaient un modèle SQL.


Pour rechercher des noms contenant exactement 5 caractères, utilisez "^" et "$" pour faire correspondre le début et la fin du nom, et 5 instances "." >

Le code est le suivant :

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;^.....$&#39;;

你也可以使用“{n}”“重复n次”操作符重写前面的查询:

代码如下:

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;^.{5}$&#39;;

这些知识一些简单的mysql的replace和regexp的用法,对于深入的学习,我们会在之后的文章会将具体的例子以及用法写出

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn