OVH Cloud OVH Cloud

conversion de caractère

3 réponses
Avatar
Franck
Bonjour à tous,

je travaille sur SQL2000 avec une base ayant un classement
SQL_Latin1_General_CP437_BIN
j'ai un pb pour remplacer é par e etc....
je vous donne le code:

UPPER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLAC
E(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(replace(RT
RIM(isnull(s.code_postal,'')),' ','')+'*****', 1, 5)
+ SUBSTRING(replace(rtrim(isnull(lower(s.nom_ste_contact),'')),'
','')+'***************', 1, 15)
+ SUBSTRING(replace(rtrim(isnull(crm.onyx_ref_desc,'')),' ','') + '**', 1,
2)
,'ÿ','y'),'ñ','n')
,'â','a'),'à','a')
,'ä','a'),'ê','e')
,'é','e'),'è','e')
,'ë','e'),'ô','o')
,'ö','o'),'ò','o')
,'ó','o'),'û','u')
,'ù','u'),'ü','u')
,'ú','u'),'ç','c'))


en fait dans ce cas mes é apparaissent avec l'accent en majuscule. pareil
pour la plupart des autes accents...
j'ai don c fait diferemment avec la partie ce dessous...

,char(255),'y'),char(241),'n')
,char(226),'a'),char(224),'a')
,char(228),'a'),char(234),'e')
,char(233),'e'),char(232),'e')
,char(235),'e'),char(244),'o')
,char(246),'o'),char(242),'o')
,char(243),'o'),char(251),'u')
,char(249),'u'),char(252),'u')
,char(250),'u'),char(231),'c'))

et même problème !!!

help me :-)

3 réponses

Avatar
Sylvain Lafontaine
Vous devriez simplifier votre code et vérifier avec un seul champ et une
seule fonction Replace() ce qui ne fonctionne pas.

De plus, dans votre cas, il serait peut-être bon de réaliser la conversion
des caractères du côté client ou même de rajouter une deuxième série de
champs, sans accent et en majuscule, à votre table.

Regardez également du côté des fonctions UDF (User Defined Function).

S. L.

"Franck" wrote in message
news:
Bonjour à tous,

je travaille sur SQL2000 avec une base ayant un classement
SQL_Latin1_General_CP437_BIN
j'ai un pb pour remplacer é par e etc....
je vous donne le code:




UPPER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLAC
E(REPLACE(REPLACE(



REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(replace(RT
RIM(isnull(s.code_postal,'')),' ','')+'*****', 1, 5)
+ SUBSTRING(replace(rtrim(isnull(lower(s.nom_ste_contact),'')),'
','')+'***************', 1, 15)
+ SUBSTRING(replace(rtrim(isnull(crm.onyx_ref_desc,'')),' ','') + '**', 1,
2)
,'ÿ','y'),'ñ','n')
,'â','a'),'à','a')
,'ä','a'),'ê','e')
,'é','e'),'è','e')
,'ë','e'),'ô','o')
,'ö','o'),'ò','o')
,'ó','o'),'û','u')
,'ù','u'),'ü','u')
,'ú','u'),'ç','c'))


en fait dans ce cas mes é apparaissent avec l'accent en majuscule. pareil
pour la plupart des autes accents...
j'ai don c fait diferemment avec la partie ce dessous...

,char(255),'y'),char(241),'n')
,char(226),'a'),char(224),'a')
,char(228),'a'),char(234),'e')
,char(233),'e'),char(232),'e')
,char(235),'e'),char(244),'o')
,char(246),'o'),char(242),'o')
,char(243),'o'),char(251),'u')
,char(249),'u'),char(252),'u')
,char(250),'u'),char(231),'c'))

et même problème !!!

help me :-)






Avatar
Julien
Voir COLLATE()

exemple :
print 'é' COLLATE SQL_Latin1_General_CP1253_CI_AI
print 'ä' COLLATE SQL_Latin1_General_CP1253_CI_AI

trouve le bon classement ..


"Franck" a écrit dans le message de news:
Bonjour à tous,

je travaille sur SQL2000 avec une base ayant un classement
SQL_Latin1_General_CP437_BIN
j'ai un pb pour remplacer é par e etc....
je vous donne le code:

UPPER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REP LAC
E(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(replace (RT
RIM(isnull(s.code_postal,'')),' ','')+'*****', 1, 5)
+ SUBSTRING(replace(rtrim(isnull(lower(s.nom_ste_contact),'')),'
','')+'***************', 1, 15)
+ SUBSTRING(replace(rtrim(isnull(crm.onyx_ref_desc,'')),' ','') + '**', 1,
2)
,'ÿ','y'),'ñ','n')
,'â','a'),'à','a')
,'ä','a'),'ê','e')
,'é','e'),'è','e')
,'ë','e'),'ô','o')
,'ö','o'),'ò','o')
,'ó','o'),'û','u')
,'ù','u'),'ü','u')
,'ú','u'),'ç','c'))


en fait dans ce cas mes é apparaissent avec l'accent en majuscule. pareil
pour la plupart des autes accents...
j'ai don c fait diferemment avec la partie ce dessous...

,char(255),'y'),char(241),'n')
,char(226),'a'),char(224),'a')
,char(228),'a'),char(234),'e')
,char(233),'e'),char(232),'e')
,char(235),'e'),char(244),'o')
,char(246),'o'),char(242),'o')
,char(243),'o'),char(251),'u')
,char(249),'u'),char(252),'u')
,char(250),'u'),char(231),'c'))

et même problème !!!

help me :-)
Avatar
Fred BROUARD
utiliser mon UDF FN_TRANSLATE :
http://sqlpro.developpez.com/MSSQLServer_collations/Collations.html#A1

De cette manière :

FN_TRANSLATE(MaColonne, 'ÿñâàäêéèëîïìôöòóùûüúç','ynaaaeeeeiiioooouuuuc')

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Franck a écrit:
Bonjour à tous,

je travaille sur SQL2000 avec une base ayant un classement
SQL_Latin1_General_CP437_BIN
j'ai un pb pour remplacer é par e etc....
je vous donne le code:

UPPER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLAC
E(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(replace(RT
RIM(isnull(s.code_postal,'')),' ','')+'*****', 1, 5)
+ SUBSTRING(replace(rtrim(isnull(lower(s.nom_ste_contact),'')),'
','')+'***************', 1, 15)
+ SUBSTRING(replace(rtrim(isnull(crm.onyx_ref_desc,'')),' ','') + '**', 1,
2)
,'ÿ','y'),'ñ','n')
,'â','a'),'à','a')
,'ä','a'),'ê','e')
,'é','e'),'è','e')
,'ë','e'),'ô','o')
,'ö','o'),'ò','o')
,'ó','o'),'û','u')
,'ù','u'),'ü','u')
,'ú','u'),'ç','c'))


en fait dans ce cas mes é apparaissent avec l'accent en majuscule. pareil
pour la plupart des autes accents...
j'ai don c fait diferemment avec la partie ce dessous...

,char(255),'y'),char(241),'n')
,char(226),'a'),char(224),'a')
,char(228),'a'),char(234),'e')
,char(233),'e'),char(232),'e')
,char(235),'e'),char(244),'o')
,char(246),'o'),char(242),'o')
,char(243),'o'),char(251),'u')
,char(249),'u'),char(252),'u')
,char(250),'u'),char(231),'c'))

et même problème !!!

help me :-)