在 SQL Server 2005 中,len() 和 datalength() 有什么区别?

5
SQL Server 2005中len()和datalength()有什么区别?
4个回答

8

4

DATALENGTH函数返回字符串的字节长度,包括尾随空格。而LEN函数返回字符长度,不包括尾随空格。例如:

SELECT LEN('string'), LEN('string '), DATALENGTH('string'), DATALENGTH('string '), LEN(N'string'), LEN(N'string '), DATALENGTH(N'string'), DATALENGTH(N'string ')

将会返回6、6、6、9、6、6、12和18。


我得到了6、6、6、7、6、6、12、14。 - dplante

2
Len()函数将从数据中删除尾随空格。
DataLength()函数则不会。
例如: Select Len('Test ') -- 这将返回4
Select DATALENGTH ('Test ') -- 这将返回5
此外(从其他出色和有用的答案汇总):
DATALENGTH返回字符串的字节长度,包括尾随空格 http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx LEN返回字符长度,不包括尾随空格 http://msdn.microsoft.com/en-us/library/ms190329.aspx 由于字符串可能由一个或两个字节(Unicode)组成,因此使用任一种方法的结果都会因字符串的数据类型和是否在字符串中存在尾随空格而有所不同。
这段代码的作用是查询字符串长度和数据长度,并返回结果。其中,LEN函数返回字符串中字符的数量,不包括末尾的空格;DATALENGTH函数返回字符串中所有字符的数量,包括末尾的空格。执行该代码后,返回的结果分别为6、6、6、7、6、6、12、14。

+1 是为了与其他答案的工作示例和编译差异而设立的。 - LCJ

0
关于字符串,datalength() 返回字节数,而 len() 返回字符数的整数值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接