Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-fr-generale by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group