我在SQL Server中遇到问题。我想用Ltrim和Rtrim去除空间。SQL Server微调功能
我的查询是这样的
select len('test ')
返回6
select len(rtrim(ltrim('test ')))
返回6
为什么它不删除的空间?
我已经检查了ASCII值这个空间是32
任何帮助吗?
谢谢
我在SQL Server中遇到问题。我想用Ltrim和Rtrim去除空间。SQL Server微调功能
我的查询是这样的
select len('test ')
返回6
select len(rtrim(ltrim('test ')))
返回6
为什么它不删除的空间?
我已经检查了ASCII值这个空间是32
任何帮助吗?
谢谢
因为此字符串中没有空格 - test
之后有两个水平制表符(\t
)。
优秀的答案。当然可以解释6的Len()数,但是ascii代码呢? +1 – markblandford 2012-03-08 13:40:48
除非OP提供更多信息,否则无法猜测。 – 2012-03-08 13:47:56
莱恩Returns the number of characters of the specified string expression, excluding trailing blanks.
因此,len不字符串中的计数额外的尾随空白。如果你把这些空白放在字符串之前,那么这些将会被计数。
没有引起太大意义,我为:
SELECT LEN('test ')
应该返回4,而不是6 - LEN()将不计数尾随空格。
而如果你做的事:
SELECT DATALENGTH('test ')
将返回6作为DATALENGTH 确实计数尾随空格。
它返回6是因为字符串中没有空格 - [这些是制表符](http://stackoverflow.com/a/9618274/95)。 – 2012-03-08 13:31:40
@MarekGrzenkowicz - 这将解释它。虽然OP说他检查过,他们是ascii 32(空间) – AdaTheDev 2012-03-08 13:36:28
让我们拭目以待OP是否回复您的评论。对我来说,提示是第一个查询返回6,而字符串看起来比那个长。 – 2012-03-08 13:46:27
你可以仔细检查它们实际上是空格吗?正如@MarekGrzenkowicz所建议的那样,如果它们是可以解释它的标签...... – AdaTheDev 2012-03-08 13:39:28