SQL Server修剪功能

时间:2012-03-08 13:07:44

标签: sql-server

我在SQL Server中遇到问题。我想使用Ltrim和Rtrim删除空间。

我的查询就像这样

select len('test        ')

返回6

select len(rtrim(ltrim('test        ')))

返回6

为什么不删除空间?

我已检查此空间的ascii值为32。

任何帮助?

谢谢

4 个答案:

答案 0 :(得分:7)

因为此字符串中没有空格 - 在test之后有两个水平制表符\t)。

Tabs, not spaces

答案 1 :(得分:2)

对我来说没有意义:

SELECT LEN('test  ') 

应该返回4而不是6 - LEN()将 NOT 计算尾随空格。

然而,如果你这样做了:

SELECT DATALENGTH('test    ')

这将返回6,因为DATALENGTH 计算尾随空格。

答案 2 :(得分:1)

Len Returns the number of characters of the specified string expression, excluding trailing blanks.

因此,len不计算字符串中的额外尾随空格。如果你把空白放在字符串之前,那么这些就会被计算在内。

  • 选择len('test')(len = 4)
  • 选择len('test')(len = 5)

答案 3 :(得分:0)

实际上,在这两种情况下,空间都会被修剪掉,而这在SQL服务器中是标准的。 (len做修剪)