/ / Comment rechercher du texte dans une colonne mysql et inclure la ponctuation - mysql, regex

Comment rechercher du texte dans une colonne mysql et inclure la ponctuation - mysql, regex

Ma recherche SQL utilise l'expression régulière:

$sql = " select * from table where regexp CONCAT("[[:<:]]", :searchTerm, "[[:>:]]") ";

: searchTerm est une variable de recherche liée.

Actuellement, si j'exécute ma recherche du terme "bien", de nombreux résultats apparaissent. Toutefois, si je recherche "Bien" avec une virgule, le résultat de la requête est vide.

Je suppose que cela se produit car "[[: <:]]" et "[[:>:]]" sont des bornes, et par conséquent, toute ponctuation est ignorée.

Est-ce que quelqu'un sait comment je peux structurer la requête pour inclure également la ponctuation?

Réponses:

0 pour la réponse № 1

Vous pouvez utiliser la classe de caractères de ponctuation intégrée [:punct:] faire correspondre un caractère de ponctuation suivi d'un ? qui correspondra à zéro ou à l'un des caractères ou des classes de caractères précédents - dans ce cas, ce serait la classe de caractères que vous avez définie.

Par exemple:

$sql = "select * from table where regexp CONCAT("[[:<:]]", :searchTerm, "[[:punct:]]?[[:>:]]") ";

En guise d’avertissement, je n’ai pas beaucoup d’expérience avec MySql et je n’ai pas envoyé de texte à l’exemple ci-dessus. Opérateurs d'expression régulière section de la documentation mysql.

De plus, je ne suis pas sûr de ce que sont les personnagesinclus dans la classe de caractères de ponctuation intégrée, mais vous pouvez définir le vôtre à l'aide de crochets et n'inclure que les caractères de ponctuation souhaités. Par exemple [,.!?;:]