我在程序代码的所有部分中使用了LEN()函数,但发现返回值错误。因此,我使用了DATALENGTH()函数,并看到它返回了正确的值。我的问题解决了,但我想知道为什么这两个函数的功能不一样!?
PRINT LEN(' ') -- answer is 0
PRINT DATALENGTH(' ') -- answer is 1
答案 0 :(得分:8)
文档说明了这一点。
返回指定字符串表达式的字符数,不包括尾随空格。
重点增强
此函数返回用于表示任何表达式的字节数。
由于您的值只有一个(尾部)空格,因此其长度为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/