2010-10-04 14 views
7

Próbuję wstawiać końcowe spacje do kolumny VARCHAR (50), a wstawka SQL wydaje się je odciąć. Oto mój kod:Wstawianie spacji do kolumny SQL Server VARCHAR

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

Niestety, ten zwraca długość zero, co oznacza, że ​​„” została wprowadzona jako „”. Potrzebuję pustego miejsca do wstawienia dla tej kolumny - jakieś pomysły?

Odpowiedz

11

Użyj DATALENGTH, a nie LEN, ponieważ LEN nie przetwarza spacji.

Weź ten zerowej długości łańcucha, na przykład:

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

Wyniki:

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

LEN interpretuje "wleczona" obowiązuje jako ciąg o długości zerowej :) – Thakur

+2

@Aamod Thakur: Ciąg o zerowej długości nie ma znaków do sprowadzenia;) –

+0

lol .... +1 za to; D – Thakur

1

Należy również pamiętać, że SQL Server podąża za ANSI/ISO SQL-92, wypełniając ciągi znaków używane w porównaniach, aby ich długości były zgodne przed ich porównaniem. Więc może chcesz użyć predykatu LIKE dla porównań [1]

[1]
Jak SQL Server Porównuje Strings z spacje
http://support.microsoft.com/kb/316626

Powiązane problemy