OVH Cloud OVH Cloud

Pb avec la fonction SPACE

2 réponses
Avatar
Olivier Jeanraux
Bonjour,
On rencontre un problème avec la fonction SPACE.
Le problème se pose dans la configuration suivante :
- SQL 2000 SP3 (même problème avec les autres services packs!!) avec tri
français standard
- Base de données avec un tri anglais

On crée une table temporaire #Tempo (donc dans tempdb avec tri français )
avec un champ calculé :
--> chpCalcule AS (convert(varbinary(14),SPACE(14 - (LEN(Champ1) + 1)) +
Champ1))
(on insère des enregistrements de la base avec le tri anglais dans cette
table tempo)
et bizarrement quand on fait une requête du genre :

Select chpCalcule, convert(varbinary(14),SPACE(14 - (LEN(Champ1) +
1)) + Champ1) from #Tempo

et bien chpCalcule <> convert(varbinary(14),SPACE(14 - (LEN(Champ1) + 1)) +
Champ1) alors qu'ils devraient être identiques!!!!



Ce problème ne se reproduit pas si les tris sont égaux!!

Quelqu'un aurait il une solution ou aurait reproduit ce problème??



Merci.

2 réponses

Avatar
Med Bouchenafa [MVP]
J'ai tendance à penser que c'est plutôt VARBINARY qui pose problème et non SPACE
C'est assez curieux en effet et je ne sais pas, par contre, si ce comportement est normal

--
Salutations
Med Bouchenafa
TETRASET
75015 Paris


"Olivier Jeanraux" a écrit dans le message de news:

Bonjour,
On rencontre un problème avec la fonction SPACE.
Le problème se pose dans la configuration suivante :
- SQL 2000 SP3 (même problème avec les autres services packs!!) avec tri
français standard
- Base de données avec un tri anglais

On crée une table temporaire #Tempo (donc dans tempdb avec tri français )
avec un champ calculé :
--> chpCalcule AS (convert(varbinary(14),SPACE(14 - (LEN(Champ1) + 1)) +
Champ1))
(on insère des enregistrements de la base avec le tri anglais dans cette
table tempo)
et bizarrement quand on fait une requête du genre :

Select chpCalcule, convert(varbinary(14),SPACE(14 - (LEN(Champ1) +
1)) + Champ1) from #Tempo

et bien chpCalcule <> convert(varbinary(14),SPACE(14 - (LEN(Champ1) + 1)) +
Champ1) alors qu'ils devraient être identiques!!!!



Ce problème ne se reproduit pas si les tris sont égaux!!

Quelqu'un aurait il une solution ou aurait reproduit ce problème??



Merci.












Avatar
Fred BROUARD
1) les colonnes sont elle de type UNICODE d'un côté et ASCII de l'autre ?

2) le serveur est-il paramétré pour respecter la largeur d'octet des
littéraux ??

A +

Olivier Jeanraux a écrit:
Bonjour,
On rencontre un problème avec la fonction SPACE.
Le problème se pose dans la configuration suivante :
- SQL 2000 SP3 (même problème avec les autres services packs!!) avec tri
français standard
- Base de données avec un tri anglais

On crée une table temporaire #Tempo (donc dans tempdb avec tri français )
avec un champ calculé :
--> chpCalcule AS (convert(varbinary(14),SPACE(14 - (LEN(Champ1) + 1)) +
Champ1))
(on insère des enregistrements de la base avec le tri anglais dans cette
table tempo)
et bizarrement quand on fait une requête du genre :

Select chpCalcule, convert(varbinary(14),SPACE(14 - (LEN(Champ1) +
1)) + Champ1) from #Tempo

et bien chpCalcule <> convert(varbinary(14),SPACE(14 - (LEN(Champ1) + 1)) +
Champ1) alors qu'ils devraient être identiques!!!!



Ce problème ne se reproduit pas si les tris sont égaux!!

Quelqu'un aurait il une solution ou aurait reproduit ce problème??



Merci.













--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************