|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() |
J'ai une colonne alphanumérique qui comporte un nombre variable d'étoiles (*) ou de zéros (0) et je souhaiterais rendre NULL ces valeurs.
Par contre, la requête ne doit pas me retourner les 'vrais' zéros à l'intérieur des nombres (ne doit pas retourner 12004 par exemple). J'ai regardé du côté des expressions régulières de MySQL mais je ne trouve pas la bonne syntaxe. Par exemple, je voudrais une requête qui me retourne toutes les valeurs de ce type : 0 00 000 00.0 000000000 000000. Mais pas celles de ce type : 200025673 <-- vrai identifiant à conserver 000000001 <-- mauvais identifiant à éliminer plus tard A000568932 <-- ça je ne sais pas encore quoi en faire ! La requête aurait la forme : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#2 | ||
|
Invité(e)
Messages : n/a ![]() |
En formalisant ta demande, je pense que la solution parait plus simple :
Trouver les mots contenant seulement des 0 ou des * => trouver les mots qui contiennent au mois une fois un char dans [1-9] et [a-Z]. Peut être comme ça : [^1-9a-zA-Z] Remarque, marche aussi avec NOT REGEXP, ce qui au final doit donner ça : Code :
|
||
00
|
|
|
#3 | |||||
![]() ![]() Arnaud FeltzDéveloppeur .NET Inscription : août 2005 Messages : 5 204 ![]() |
Tiré du lien :
Citation:
Code :
Scorpio, apparemment faut pas d'accolades [edit] Testé et approuvé : Code :
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère Installation de Code::Blocks sous Debian à partir de Nightly Builds
|
|||||
|
00
|
|
|
#4 |
![]() ![]() |
Merci pour vos réponses, j'aurais au moins appris quelque chose.
Mais pour le moment, j'ai procédé plus ou moins à la main avec une série de requêtes. J'en aurai peut-être besoin quand même pour affiner encore le nettoyage des données. En attendant je marque le sujet comme résolu. J'y reviendrai si j'ai encore besoin d'aide.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 |
|
Invité(e)
Messages : n/a ![]() |
buchs, ta solution ne permet pas de détecter les 0.00
Motif#1: preg_match_all #0*# 000 -> 1 0.00 -> 0 1000 -> 0 010 -> 0 0aa46 -> 0 0***0 -> 0 *0123 -> 0 Motif#2: preg_match_all #[^a-zA-Z1-9]# 000 -> 1 0.00 -> 1 1000 -> 0 010 -> 0 0aa46 -> 0 0***0 -> 1 *0123 -> 0 Edit : ma solution permet de gérer aussi le cas des étoiles Dernière modification par Scorpi0 ; 01/10/2008 à 11h15. |
00
|
|
|
#6 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
ça me semble outrageusement compliqué d'utiliser les regex dans ce cas-là...
Si on oublie les cas du genre A000568932 et qu'on considère que tes nombres sont entiers, je dirais : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com