-
Java REGEXP dans MYSQL
Bonsoir !
J'interroge une base MySQL via Java avec Connection, Statement et ResultSet.
Si ma requête est la suivante, ça passe sans problème :
SELECT * FROM TableX WHERE Periode REGEXP '2010-01-00' AND Texte REGEXP "[[:<:]]Denis[[:>:]]"
MAIS, si j'ajoute une condition de plus, là ça ne renvoie rien ...alors que ça devrait !
SELECT * FROM TableX WHERE Periode REGEXP '2010-01-00' AND Texte REGEXP "[[:<:]]Denis[[:>:]]" AND Texte REGEXP "[[:<:]]parfois[[:>:]]"
Je précise que le Texte en question contient bien les mots 'Denis' et 'parfois'. Je peux vérifier en interrogeant directement MySQL dans une interface style PHPmyadmin.
Si quelqu'un a une idée... Merci !
-
regarde sur ce post :
http://www.developpez.net/forums/d62...l/#post3805066
ça ne marche pas pour MySQL 4 apparemment (j'ai pas testé).
Si t'as un ordre dans l'apparence de tes mots alors fais comme décrit dans ce post.
Bon courage
-
Zut, ça marche toujours pas...
Si je reprends la dernière suggestion :
SELECT * FROM TableX WHERE Dictionnaire REGEXP '([[:<:]]Denis[[:>:]])*([[:<:]]parfois[[:>:]])'
Alors, ça ne donne rien depuis Java et en plus ça me pose un problème directement
depuis MySQL car l'ordre des mots ne doit pas peser sur la requête (je veux savoir si Denis
et parfois apparaissent dans le dictionnaire peu importe leur ordre d'apparition).
MAIS, si je modifie la requête pour n'inclure qu'une REGEX, alors ça marche très bien
depuis Java ??!?!
SELECT * FROM TableX WHERE Dictionnaire REGEXP '([[:<:]]Denis[[:>:]])*'
De toute évidence c'est la multiplication des conditions REGEXP qui plantent la requête
quand elle est formulée depuis java....
Y-a-t-il une alternative ?
-
Je viens de comprendre le problème.
En fait, en plus des requêtes autour de mots comme Denis, parfois etc., j'ai aussi
des requêtes sur des mots avec accents !!!!
Et lá ça plante immanquablement. Pas dans MySQL directement mais pour les SELECT
formulés dans un programme java.
Bon je fouille maintenant dans la fonction CONVERT etc. pour transformer mes chaînes...