Faire du pattern matching et des expressions reguliers sous MySQL? - SQL/NoSQL - Programmation
Marsh Posté le 17-05-2005 à 16:27:57
elle existe cette fonction, j'ai foi en elle...
Aidez moi à la trouver
Marsh Posté le 17-05-2005 à 16:47:04
t'as cherché dans la doc?
Marsh Posté le 17-05-2005 à 16:59:47
Hum, tu as dû mal regarder parce que j'ai trouvé en 2 secondes... tu utilises quelle version de MySQL?
C'est l'annexe G tout à la fin de la doc.
Marsh Posté le 17-05-2005 à 17:31:57
je connais la fonction REGEXP mais moi ce que je veux faire c'est convertir pour tester exemple:
select tel from clients where LaisseUniquementAlphanumerique(tel)='0820363698'
comme ca si j'ai dans ma table '08-20-36-36-98' ou '08 20 36 36 98' ou ''08.20.36.36.98' ben ca me dira bien que le numero existe
Marsh Posté le 17-05-2005 à 18:45:04
ah ok, je pensais que tu cherchais le nom de la fonction
Mais les expressions régulières, c'est un langage à soi tout seul. Et je suis loin d'être un spécialiste en la matière...
Marsh Posté le 18-05-2005 à 09:21:52
le probleme c'est pas les regex au fait c'est simplement trouver la fonction qui fait l'extraction suivant un pattern:
Autre exemple:
Extract("totot21557tata","[a-z]" ) me renverrais totottata
Ca ne peut que exister vu que cette fonction est presente dans tous les langages
Marsh Posté le 18-05-2005 à 09:52:51
0869696969 REGEXP (([0-9]{2}).{0,){5}
http://dev.mysql.com/doc/mysql/en/ [...] tions.html
Marsh Posté le 18-05-2005 à 10:05:07
merci Gaspard mais le proble est ailleurs
le 0869696969 est la valeur à comparer avec tous les champs tel de la table clients c'est donc sur clients.tel qu'il faut faire l'extraction étant donné que les enregistrement 08-69-69-69 ou 08_69_69_69 ou 08.69.69.69 doivent etre renvoyes pour un select * from clients where extract(clients.tel,monregexp)='0869696969'
Je sais pas si je suis claire
Marsh Posté le 18-05-2005 à 10:28:09
J'ai trouvé une piste interresante:
SELECT REPLACE (
'aajhvcyuifiysa',
'a',
''
)
-><>--->jhvcyuifiys
t'enleve bien remplace bien le 'a' par '' mais l'idéal ce serait de mettre comme 2eme parametre un pattern pour remplacer en ensemble par ''
Marsh Posté le 17-05-2005 à 16:14:36
Hola,
Je verifie de ne pas inserer des doublons dans ma base pour cela je teste 2 champs de mon formulaire: Nom et telephone...
Exemple:
01.40.56.85.96
peut s'ecrire:
01-40-56-85-96
01/40/56/85/96
01 40 56 85 96
C'est le meme numero mais inscrit de maniere differente, comment faire pour faire du pattern matching sous MySQL avec un LIKE genre:
select * from Clients where XXX(tel,"[0-9]") like "0140568596"
Ce que je chereche c'est la fonction XXX
Message édité par PETOZAK le 17-05-2005 à 16:15:06