2010-10-04 2 views
7

J'essaie d'insérer des espaces de fin dans une colonne VARCHAR (50) et l'insertion SQL semble les couper. Voici mon code:Insérer un espace de fin dans une colonne SQL Server VARCHAR

create table #temp (field varchar(10)); 
insert into #temp select ' '; 
select LEN(field) from #temp; 

Malheureusement, cela renvoie une longueur de zéro, ce qui signifie la « » a été inséré comme « ». J'ai besoin d'un espace vide à insérer pour cette colonne - des idées?

Répondre

11

Utilisez DATALENGTH, et non LEN, car LEN ne traite pas les espaces.

Prenez cette chaîne de longueur zéro, par exemple:

SELECT LEN(' ') AS len, 
     DATALENGTH(' ') AS datalength 

Résultats:

len datalength 
----------------- 
0  1 
+0

LEN Intèrprets "traînante" espaces sous forme de chaîne de longueur zéro :) – Thakur

+2

@Aamod Thakur: Une chaîne de longueur zéro n'a pas de caractères à suivre;) –

+0

lol .... +1 pour cela; D – Thakur

1

Vous devez également savoir que SQL Server suit ANSI/ISO SQL-92 en remplissant les chaînes de caractères utilisées dans les comparaisons afin que leurs longueurs correspondent avant de les comparer. Ainsi, vous pouvez utiliser prédicat LIKE pour les comparaisons [1]

[1]
Comment SQL Server compare les chaînes avec des espaces en fin de chaîne
http://support.microsoft.com/kb/316626