Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql LEN()函数是否在内部应用TRIM()?_Sql_Sql Server - Fatal编程技术网

Sql LEN()函数是否在内部应用TRIM()?

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个字符。但是,当尝

在计算字符串长度之前,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个字符。但是,当尝试使用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