|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 17 ![]() |
J'utilise une commande SQL assortie d'une RegEx pour sélectionner certains enregistrements qui contiennent la chaîne '[V1.2]', par exemple
[V1.2]blablabla1 [V1.2]blablabla2 ... SELECT champ1, champ2 FROM table1 WHERE champ2 ~ '1\.2'; Quelqu'un peut me dire pourquoi: - cette commande retourne la ligne même si elle ne reconnaît qu’un partie de la chaîne (pas besoin d’inclure .+ ou *) - il est impossible d’utiliser les crochets même avec le caractère d’échappatoire comme suit ‘\[‘ |
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
si tu met que 1\.2 ca te retourne tout ce qui contient 1.2 donc 1.22, 1.455, 1.2klmklm et meme klmfsd1.2klmkm
il faut donc etre plus restrictif, si ton champ ne contient que [Vx.x], il faut mettre ^ pour dire qui commence par, et $ pour finir par. Pour les [ ] il faut les echapper ... 2 fois (oui etrange) Donc ca devrait marcher : Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Merci hpalpha,
non, en réalité, mon champ est constitué de valeurs qui contiennent [V1.2] suivi d'une foule de choses différentes. Mais je croyais que l'expression régulière devait absolument correspondre à toute la ligne, c'est à dire utiliser pour trouver [V1.2]blablabla, mais je réalise que l'expression régulière peut référer à une portion de la ligne pour retourner cette dernière. Pour ce qui est du double \\ devant les crochets, ça fonctionne! Mais je ne comprends pas la logique, as-tu l'explication? |
|
|
00
|
|
|
#4 | ||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
en fait maintenant que j'y reflechit, je pense que c'est tout simplement a cause de la chaine qui interprete le formatage comme \t pour tabulation \r pour retour chariot.
et donc ma requete etait donc pas reelement bonne \. est \\. une chaine qui n'interprete pas le formatage, c'est $quelquechose$mon texte$quelquechose$ pour l'expression reg, pas besoin dans ton cas de specifier la fin (.+ pas utile) Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Ok, merci encore.
Oui, en effet, j'ai aussi réalisé tout-à-l'heure qu'il faut utiliser le double 'backslash' devant tout caractère de contrôle Par contre, je n'ai pas réussi à faire fonctionner ta deuxième syntaxe (sans apostrophes). |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
je viens de tester ca marche, mais ca depend de la version de pg, > 8 c'est bon
http://postgresql.developpez.com/doc...dollar-quoting |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 17 ![]() |
Ok, super!
Merci encore pour les trucs. Je suis nouveau sur ce forum et dans l'utilisation de PostgreSQL, et content d'avoir une ressource comme celle-ci, vraiment utilisée par des développeurs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com