Вставьте завершающий пробел в столбец VARCHAR SQL Server - PullRequest
7 голосов
/ 05 октября 2010

Я пытаюсь вставить конечные пробелы в столбец VARCHAR (50), и вставка SQL, похоже, обрезает их.Вот мой код:

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

К сожалению, это возвращает нулевую длину, что означает, что '' был вставлен как ''.Мне нужно вставить пробел в этот столбец - есть идеи?

Ответы [ 3 ]

11 голосов
/ 05 октября 2010

Используйте DATALENGTH , а не LEN , поскольку LEN не обрабатывает пробелы.

Возьмем эту строку нулевой длины, например:

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

Результаты:

len   datalength
-----------------
0     1
4 голосов
/ 05 октября 2010

С http://msdn.microsoft.com/en-us/library/ms190329.aspx:

LEN Возвращает количество символов указанного строкового выражения, исключая завершающие пробелы.

1 голос

Вам также следует помнить, что SQL Server следует ANSI / ISO SQL-92, дополняя строки символов, используемые в сравнениях, чтобы их длины соответствовали перед их сравнением.Поэтому вы можете использовать предикат LIKE для сравнений [1]

[1]
Как SQL Server сравнивает строки с конечными пробелами
http://support.microsoft.com/kb/316626

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...