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

Zol*_*ari 0 sql-server

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

PRINT LEN(' ') -- answer is 0
PRINT DATALENGTH(' ') -- answer is 1
Run Code Online (Sandbox Code Playgroud)

Lar*_*rnu 8

文档解释了这个.

LEN(Transact-SQL):

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

强调我的

DATALENGTH(Transact-SQL):

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

由于您具有单个(尾随)空间的值,因此它的长度为0,但仍然存储空间; 并且varchar每个字符的大小为1个字节.