Re: Comment faire un cast de varchar en integer?

From: Jean-Paul Argudo <jean-paul(at)argudo(dot)org>
To: Pierre Couderc <pierre(at)couderc(dot)cc>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Comment faire un cast de varchar en integer?
Date: 2006-04-11 10:06:55
Message-ID: 443B7FBF.7030605@argudo.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Re,

> Version 7.4.7
> Merci

Upgradez! ;-)

> Maintenant, je bute sur quelques codes postaux non français non
> numériques, que je réussis à éliminer
> grace à un expression régulière : j'ai essayé :
> SELECT "Nom","Adresse","Code Postal" FROM "Entreprises" WHERE (( "Code
> Postal" ~ '^ *[0-9]+ *$') ;
>
> Et ça marche très bien, mais quand je rajoute une condition de condition
> de code postal
>
> SELECT "Nom","Adresse","Code Postal" FROM "Entreprises" WHERE (( "Code
> Postal" ~ '^ *[0-9]+ *$') AND ("Code Postal"::text::int>0 );
>
> il me trouve un erreur dans cette bonne ville des Pennnes Mirabaux
> (13710):
>
> Description: ERREUR: Syntaxe en entrée invalide pour l'entier :
> "13170 "
> Number: -2147467259
> Routine: pgAdmin II:frmSQLInput.cmdExecute_Click
>
> Qu'a-t-il contre les Pennes Mirabaux? D'autant que si je remplace le
> [0-9]+ par [2-9]+ tout est bon...

Mais vous ignorez donc Les Pennes Mirabeau (magnifique petit coin tout
près d'Aix en Provence...) puisque la chaîne commence par "1".

Et vous avez le soucis parceque "13170 " ce n'est pas la même chose que
"13170". Soit il y a une espace, que vous semblez ne pas échapper dans
votre regexp (à vue de nez, non testé).

Je pense que vous devriez nettoyer dans un premier temps vos données, et
ensuite transformer le type de donnée de la colonne. Ou alors, si vous
n'avez pas le droit de le faire, faire une vue sur cette table, qui
contiendra les casts adéquats pour rendre vos données utilisables.

> Mercci

Je vous en prrie ;-)

--
Jean-Paul Argudo

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message DANTE ALEXANDRA 2006-04-12 15:16:11 Compilation de PostGreSQL sous Windows 64 bits
Previous Message Pierre Couderc 2006-04-11 09:41:37 Re: Comment faire un cast de varchar en integer?