在计算字符串长度之前,在SQL LEN()
函数内部TRIM()
调用数据?
示例:
DECLARE @a VARCHAR(MAX), @b VARCHAR(MAX)
SET @a = '12345 '
SET @b = '12345 7'
SELECT @a, LEN(@a)
-- 12345 5
SELECT @b, LEN(@b)
-- 12345 7 7
@a
和@b
都有7个字符。 @a
最后有5个数字字符和两个空格。
从结果窗口复制两个结果时,我可以看到两个变量的长度都是7个字符。但是当试图使用LEN()
找到变量的长度时,它会有所不同。将数据存储在具有varchar
列的表中时会发生同样的事情。
答案 0 :(得分:4)
它排除尾随空白
" 返回指定字符串表达式的字符数,不包括尾随空格。"
关于
的类似问题答案 1 :(得分:0)
答案 2 :(得分:0)
LEN
排除了尾随空白。
我会用
LEN(REPLACE(expr, ' ', '_'))
这应该适用于varchar
和nvarchar
以及包含特殊unicode控制字符的字符串。在其他地方建议的DATALENGTH
函数在所有情况下都不会产生正确的结果。
您也可以使用
LEN(expr + '_') - 1
但在某些情况下,结果字符串可能超过最大文本长度。