2010-10-04 87 views
7

我试图将尾随空格插入到VARCHAR(50)列中,并且SQL插入似乎将其切断。这里是我的代码:将尾随空格插入到SQL Server VARCHAR列中

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

不幸的是,这返回的长度为零,意味着''被插入为''。我需要为此专栏插入一个空白空间 - 任何想法?

回答

11

使用DATALENGTH而不是LEN,因为LEN不处理空格。

借此零长度字符串,例如:

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

结果:

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

LEN解释“尾随”空间作为一个零长度字符串:) – Thakur 2010-10-04 21:43:23

+2

@Aamod Thakur:零长度的字符串没有要跟踪的字符;) – 2010-10-04 21:44:24

+0

lol .... +1对此; D – Thakur 2010-10-04 21:48:01

1

您最好还知道,SQL Server遵循ANSI/ISO SQL-92填充比较中使用的字符串,以便在比较它们之前匹配它们的长度。所以,你可能想LIKE谓词比较使用[1]

[1]
SQL服务器如何比较字符串用尾随空格
http://support.microsoft.com/kb/316626