为什么LEN()的输出与DATALENGTH()不同

时间:2019-02-20 10:38:24

标签: sql-server

我在程序代码的所有部分中使用了LEN()函数,但发现返回值错误。因此,我使用了DATALENGTH()函数,并看到它返回了正确的值。我的问题解决了,但我想知道为什么这两个函数的功能不一样!?

PRINT LEN(' ') -- answer is 0
PRINT DATALENGTH(' ') -- answer is 1

3 个答案:

答案 0 :(得分:8)

文档说明了这一点。

LEN (Transact-SQL)

  

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

重点增强

DATALENGTH (Transact-SQL)

  

此函数返回用于表示任何表达式的字节数。

由于您的值只有一个(尾部)空格,因此其长度为0,但是仍然存储该空格;并且使用varchar,每个字符的大小为1个字节。

答案 1 :(得分:1)

LEN函数返回指定字符串表达式的字符数,不包括结尾的空格,因此返回0。

DATALENGTH包含尾随空白。

如果要在计算长度时传递两个空格。 LEN函数仍将返回0,而DATALENGTH函数将返回2。

答案 2 :(得分:1)

LEN用于返回字符长度,如果为空白,则将其计为0。 您可以说LEN会修剪字符串以进行计算。

DATALENGTH用于计算内存空间(字节)。

找到此链接https://database.guide/len-vs-datalength-in-sql-server/