PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 03/06/2010 10:20:46

mich30
Membre

expressions regullieres

Bonjour je veux tester un champ il faut qu'il soit imerativement
de la forme  genre 12345A1234  ou 12345AA1234
avec
NNNNNCNNNN
ou
NNNNCCNNNN

N= que numerique
C= que caractere

comment fait t'on avec des expressions regullieres avec requete ou autre facon de faire
merci

Hors ligne

#2 03/06/2010 11:38:15

mich30
Membre

Re : expressions regullieres

j'ai trouve cetet expression \d{5}[A-Z]\d{4}
avec expresso 3.0
maintenant il faut que je le mette en requete

Hors ligne

#3 03/06/2010 11:52:12

mich30
Membre

Re : expressions regullieres

j'ai mis ca
SELECT regexp_matches(id_parc, '\d{5}[A-Z][A-Z]\d{4}'  ) from pci.dep13_parcelle_pci  ;
mais ca marche pas

Hors ligne

#4 03/06/2010 11:53:28

flo
Membre

Re : expressions regullieres

Salut,
Faut que tu regardes dans la doc, ici :
http://docs.postgresqlfr.org/8.4/functi … ching.html
au paragraphe "expressions rationnelles POSIX".
Je pense que c'est ce que tu cherches.

Hors ligne

#5 03/06/2010 12:07:20

flo
Membre

Re : expressions regullieres

Tu veux faire quoi exactement? Sélectionner les lignes d'une table matchant l'expression?
En supposant que c'est cela, il faut utiliser les opérateurs.

Par exemple :

select * from teste where data ~ 'tr.*';

te renvoie toutes les lignes telles que la colonne "data" contient 'tr'.

Tu pourras adapter toi-même en choisissant le bon opérateur si c'est autre chose que tu cherches (lignes ne respectant pas le motif, non-prise en compte de la casse.) C'est dans la doc.

Si cela ne répond pas à ta question, merci de préciser.

Hors ligne

#6 03/06/2010 14:24:16

mich30
Membre

Re : expressions regullieres

ok mais j'ai
select * from  pci.dep13_parcelle_pci  where id_parc ~  '(\d{5}[A-Z]{1,2}\d{4}' ;
ATTENTION:  utilisation non standard d'un échappement dans une chaîne littérale
LINE 2: ... * from  pci.dep13_parcelle_pci  where id_parc ~  '(\d{5}[A-...
                                                             ^
HINT:  Utilisez la syntaxe de la chaîne d'échappement pour les échappements,
c'est-à-dire E'\r\n'.

merci

Hors ligne

#7 03/06/2010 16:30:33

flo
Membre

Re : expressions regullieres

Et comme  ceci :

select * from  pci.dep13_parcelle_pci  where id_parc ~  E'\\d{5}[A-Z]{1,2}\\d{4}' ;

?

Dernière modification par flo (03/06/2010 16:32:55)

Hors ligne

#8 04/06/2010 17:13:22

mich30
Membre

Re : expressions regullieres

voila la reponse

select count(*) from  pci.dep1 where (id_pa) !~  '([A-Z]{1,2}[0-9]{4})' 


avec
CNNNN
ou
CCNNNN

Hors ligne

Pied de page des forums