0

问题

我有三个变量@str1, @str2, @str3。因此,当我在变量的开头添加空格时,它给了我正确的长度,但是当我最后添加空格时,它给了我错误的结果。

解决方案

为了避免这种行为,我可以trim在检查该变量的长度之前使用该变量。

问题

为什么会发生这种情况这样做有什么好处(从右侧而不是左侧修剪空格)?

 declare @str1 varchar(30), @str2 varchar(30), @str3 varchar(30)
    SET @str1 = ' kratika,vikas,kritika'
    SET @str2 = 'kratika,vikas,kritika '
    SET @str3 = 'kratika,vikas,kritika'

PRINT LEN(@str1)
PRINT LEN(@str2)
PRINT LEN(@str3)

输出

    22
    21
    21

如果问题不清楚,请告诉我。

4

1 回答 1

2

这就是记录要做的事情:

返回指定字符串表达式的字符数,不包括尾随空格。

, 和,

要返回用于表示表达式的字节数,请使用该DATALENGTH函数。

SQL 中有许多特性都将尾随空白字符视为有些特殊。例如,字符串'abc ''abc'被认为是相等的,因为在比较发生之前,空格被添加到较短的字符串中。


如果要确定字符串的长度,包括尾随空格,那么显而易见的是将单个非空格连接到传递给的字符串LEN(),然后从结果中减去一个。

于 2013-03-18T11:48:47.270 回答