Re: Comment faire un cast de varchar en integer?

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

Version 7.4.7
Merci

Mais je pense que j'ai trouvé la parade avec
code_postal::text::integer
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...

Mercci
PC

Jean-Paul Argudo a écrit :
> Pierre Couderc wrote:
>
>> Je chreche à convertir bêtement mon code postral qui est déclaré en
>> varchar en entier?
>>
>> SELECT "Nom","Adresse","Code Postal" FROM "Entreprises" WHERE
>> CAST("Code Postal" AS INTEGER)/1000=12;
>>
>
>
>
>> Mais il me le refuuse absolument.
>>
>
> Quel est le message d'erreur? quelle version de PG ?.. etc
>
>
>> Y-a-t-il une asctuce?
>>
>
> Rien de particulier. Chez moi, les deux écritures fonctionnent:
>
>
> test2=> select nom, code_postal, code_postal::integer from entreprise
> where code_postal::integer/1000=78;
> nom | code_postal | code_postal
> --------+-------------+-------------
> dalibo | 78220 | 78220
> (1 row)
>
> test2=> select nom, code_postal, code_postal::integer from entreprise
> where CAST(code_postal AS INTEGER)/1000=78;
> nom | code_postal | code_postal
> --------+-------------+-------------
> dalibo | 78220 | 78220
> (1 row)
>
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Jean-Paul Argudo 2006-04-11 10:06:55 Re: Comment faire un cast de varchar en integer?
Previous Message Jean-Paul Argudo 2006-04-11 08:54:55 Re: Comment faire un cast de varchar en integer?