Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2011, 14h29   #1
Membre à l'essai
 
Inscription : décembre 2006
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 168
Points : 24
Points : 24
Par défaut Problème LEN sur variable Max

Bonjour,

J'ai un souci sur un serveur SQL, lorsque j’exécute ce code :

Code :
1
2
3
declare @t varchar(max);
SET @t = 'abcd '
print len(@t)
SQL me renvoie 5 caractères alors qu'il devrait me renvoyer 4 caractères car la fonction LEN ne compte pas les espaces à droite.

Si j’exécute ce code :

Code :
1
2
3
declare @t varchar(10);
SET @t = 'abcd '
print len(@t)
SQL me renvoie bien 4 caractères.

Je ne vois pas pourquoi lorsque je définis ma variable en max SQL server ne me renvoie pas le bon nombre de caractères.

J'utilise une base SQL Server 2005

Merci de votre aide
exile69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h36   #2
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
-- J'ai dit une bêtise --

Effectivement, len() vire les espaces à droite.
http://msdn.microsoft.com/fr-fr/library/ms190329.aspx
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h41   #3
Membre à l'essai
 
Inscription : décembre 2006
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 168
Points : 24
Points : 24
Code :
1
2
3
4
5
6
7
 
declare @t varchar(10);
declare @u char(10);
SET @t = ' abcd '
SET @u = ' abcd '
print len(@t)
print len(@u)
Les résultats seront respectivement 6 et 10.

Sur ton exemple mon serveur sql me renvoie 5 et 5

Et pour ce code :

Code :
1
2
3
4
5
6
declare @t varchar(max);
declare @u char(10);
SET @t = ' abcd '
SET @u = ' abcd '
print len(@t)
print len(@u)
Il me renvoie 6 et 5... je ne vois toujours pas pourquoi le MAX change quelque chose au résultat
exile69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h44   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Je vous propose de deplacer votre post dans le forum SQL Server, vous aurez plus de chances que des spécialistes se penchent sur votre probleme

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h50   #5
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Désolé, après vérification tu as raison, len() fait un rtrim() avant de compter les caractères...

Bah je suis content de travailler sous Oracle finalement
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h14   #6
Membre à l'essai
 
Inscription : décembre 2006
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 168
Points : 24
Points : 24
Bon voici la solution :

http://social.msdn.microsoft.com/For...7-ab344f75fb74

Cela venait des mise à jour sql server.

C'est bon a savoir.
exile69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h59.


 
 
 
 
Partenaires

Hébergement Web