我正在尝试将尾随空格插入VARCHAR(50)列,而SQL插入似乎正在将它们删除。这是我的代码:
create table #temp (field varchar(10));
insert into #temp select ' ';
select LEN(field) from #temp;
不幸的是,这会返回零长度,这意味着''被插入为''。我需要为此专栏插入一个空白区域 - 任何想法?
答案 0 :(得分:11)
使用DATALENGTH,而不是LEN,因为LEN不处理空格。
取这个零长度字符串,例如:
SELECT LEN(' ') AS len,
DATALENGTH(' ') AS datalength
结果:
len datalength
-----------------
0 1
答案 1 :(得分:4)
来自http://msdn.microsoft.com/en-us/library/ms190329.aspx:
LEN返回指定字符串表达式的字符数,不包括尾随空格。
答案 2 :(得分:1)
您最好还要注意,SQL Server遵循ANSI / ISO SQL-92填充比较中使用的字符串,以便在比较它们之前匹配它们的长度。因此,您可能希望使用LIKE谓词进行比较[1]
[1]
SQL Server如何将字符串与尾随空格进行比较
http://support.microsoft.com/kb/316626