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 25/03/2010 11:14:41

gilou974
Membre

Probleme semblerait-il d'encodage ??

Bonjour à tous.

J'ai un pb qui semble venir de l'encodage mais je ne sais pas trop comment vérifier s'il s'agit bien de celà et si "oui" comment le corriger.

Voilà je veux exécuter :

SELECT
    --nextval(provisionnement_id_seq)AS id_pro,
    id_soc,
    tca AS id_tca,
    id_tga,
    regexp_replace(nm_soc,'  ',''),
    regexp_replace(regexp_replace( trim(nm_soc), '\\.00',''),' ',''),
    substring(regexp_replace(regexp_replace( nm_soc, '.00',''),' ','')  FROM '[0-9]+' )AS nm_soc_soc,
    nm_soc,
    d_conseil, type_prov, tga, montant_prov, id_pim
FROM provisionimport pim
LEFT JOIN societaire soc ON soc.nm_soc_soc = substring( nm_soc FROM '[0-9]+' )::integer
JOIN type_garantie tga ON pim.tga = tga.st_type_tga

Mais pour certaine donnée je n'arrive pas à me débarasser de l'espace dans mon nombre.

Si je copie colle la valeur retournée par la requête et que je teste:

select regexp_replace(regexp_replace('8 167.00','.00','' ),' ','')  Avec valeur retournée --> résultat 8 167

Alors que si je tape manuellement:
select regexp_replace(regexp_replace('8 167.00','.00','' ),' ','') --> résultat 8167

Quelqu'un aurait -il un idée svp.

Hors ligne

#2 25/03/2010 11:32:31

gilou974
Membre

Re : Probleme semblerait-il d'encodage ??

Si j'essaie comme çà :

select regexp_replace(regexp_replace(convert_from('10 336.00','UTF8'),'.00','' ),' ','') Avec valeur retournée --> résultat 8 167
select regexp_replace(regexp_replace(convert_from('10 336.00','UTF8'),'.00','' ),' ','') --> résultat 8167

rien ne change en fait ??

Pas l'encodage ? mais quoi alors ?

Hors ligne

#3 25/03/2010 11:38:04

gilou974
Membre

Re : Probleme semblerait-il d'encodage ??

Si j'essaie comme çà :

select regexp_replace(regexp_replace(convert_from('10 336.00','LATIN1'),'.00','' ),' ','') Avec valeur retournée --> résultat "10Â 336"
select regexp_replace(regexp_replace(convert_from('10 336.00','LATIN1'),'.00','' ),' ','') --> résultat "10336"

on voit bien là une différence ??

Hors ligne

#4 25/03/2010 12:23:33

Marc Cousin
Membre

Re : Probleme semblerait-il d'encodage ??

Bonjour,

Difficile à dire comme cela. Mais il existe plusieurs types d'espaces, surtout si vous êtes en encodage unicode (il y a par exemple un caractère espace insécable).

Je commencerais, à votre place, par lui demander de remplacer TOUS les espaces. Il s'agit de l'escape \s, comme indiqué ici : http://docs.postgresql.fr/8.4/functions … SIX-REGEXP

\s doit pouvoir correspondre aux espaces, espaces insécables, tabulations…


Marc.

Hors ligne

#5 25/03/2010 12:35:25

gilou974
Membre

Re : Probleme semblerait-il d'encodage ??

Bonjour et un grand MERCI monsieur Cousin

je n'avais pas parcouru la doc assez en avant pour ces caractères d'échappement fort utiles.

Merci bcp

Hors ligne

Pied de page des forums