Sql LEN()函数是否在内部应用TRIM()?
在计算字符串长度之前,SQL LEN函数是否会对数据进行内部修剪 例如:Sql LEN()函数是否在内部应用TRIM()?,sql,sql-server,Sql,Sql Server,在计算字符串长度之前,SQL LEN函数是否会对数据进行内部修剪 例如: 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个字符。但是,当尝
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列的表中存储数据时也会发生同样的情况。它排除了后面的空格
据
返回指定字符串表达式的字符数,不包括尾随空格
也有类似的问题
它不包括尾随空格
据
返回指定字符串表达式的字符数,不包括尾随空格
也有类似的问题
它不会修剪源代码本身,这意味着它不会改变它-但它确实排除了训练空白: 发件人: 返回指定字符串表达式的字符数,不包括尾随空格
它不会修剪源代码本身,这意味着它不会改变它-但它确实排除了训练空白: 发件人: 返回指定字符串表达式的字符数,不包括尾随空格 LEN不包括尾随空白 我会用
LEN(REPLACE(expr, ' ', '_'))
这应该适用于varchar和nvarchar,也适用于包含特殊unicode控制字符的字符串。在其他地方建议的DATALENGTH函数在所有情况下都不会产生正确的结果
你也可以使用
LEN(expr + '_') - 1
但在某些情况下,生成的字符串可能超过最大文本长度。LEN不包括尾随空格
我会用
LEN(REPLACE(expr, ' ', '_'))
这应该适用于varchar和nvarchar,也适用于包含特殊unicode控制字符的字符串。在其他地方建议的DATALENGTH函数在所有情况下都不会产生正确的结果
你也可以使用
LEN(expr + '_') - 1
但在某些情况下,生成的字符串可能会超过最大文本长度。如果希望字符串的长度在结尾或开头包含空格,则可以使用DATALENGTH而不是Head如果希望字符串的长度在结尾或开头包含空格,则可以改为使用DATALENGTH