我试图将尾随空格插入到VARCHAR(50)列中,并且SQL插入似乎将其切断。这里是我的代码:将尾随空格插入到SQL Server VARCHAR列中
create table #temp (field varchar(10));
insert into #temp select ' ';
select LEN(field) from #temp;
不幸的是,这返回的长度为零,意味着''被插入为''。我需要为此专栏插入一个空白空间 - 任何想法?
我试图将尾随空格插入到VARCHAR(50)列中,并且SQL插入似乎将其切断。这里是我的代码:将尾随空格插入到SQL Server VARCHAR列中
create table #temp (field varchar(10));
insert into #temp select ' ';
select LEN(field) from #temp;
不幸的是,这返回的长度为零,意味着''被插入为''。我需要为此专栏插入一个空白空间 - 任何想法?
使用DATALENGTH而不是LEN,因为LEN不处理空格。
借此零长度字符串,例如:
SELECT LEN(' ') AS len,
DATALENGTH(' ') AS datalength
结果:
len datalength
-----------------
0 1
从http://msdn.microsoft.com/en-us/library/ms190329.aspx:
LEN返回指定字符串表达式的字符数,不包括尾部空白。
您最好还知道,SQL Server遵循ANSI/ISO SQL-92填充比较中使用的字符串,以便在比较它们之前匹配它们的长度。所以,你可能想LIKE谓词比较使用[1]
[1]
SQL服务器如何比较字符串用尾随空格
http://support.microsoft.com/kb/316626
LEN解释“尾随”空间作为一个零长度字符串:) – Thakur 2010-10-04 21:43:23
@Aamod Thakur:零长度的字符串没有要跟踪的字符;) – 2010-10-04 21:44:24
lol .... +1对此; D – Thakur 2010-10-04 21:48:01