Faire du pattern matching et des expressions reguliers sous MySQL?

Faire du pattern matching et des expressions reguliers sous MySQL? - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 17-05-2005 à 16:14:36   

Reply

Marsh Posté le 17-05-2005 à 16:27:57    

elle existe cette fonction, j'ai foi en elle... :)
Aidez moi à la trouver :D

Reply

Marsh Posté le 17-05-2005 à 16:47:04    

t'as cherché dans la doc?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 17-05-2005 à 16:51:59    

oui rien du tout à part les wildcards à utiliser :(

Reply

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.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 17-05-2005 à 17:24:57    

j'ai la version qui est sur easyPHP 1.8

Reply

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 :)


Message édité par PETOZAK le 17-05-2005 à 17:32:30
Reply

Marsh Posté le 17-05-2005 à 17:52:22    

help me :(

Reply

Marsh Posté le 17-05-2005 à 18:45:04    

ah ok, je pensais que tu cherchais le nom de la fonction [:joce]
 
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...


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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 :(

Reply

Marsh Posté le 18-05-2005 à 09:21:52   

Reply

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


Message édité par GaSPaRD77 le 18-05-2005 à 09:53:13
Reply

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 :)

Reply

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 '' :)


Message édité par PETOZAK le 18-05-2005 à 10:39:48
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed