5

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

4

4 回答 4

8

DATALEN 将返回用于存储值的字节数:

http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx

LEN 将返回字符串中的字符数。由于字符串可以使用单字节或双字节字符,这与 DATALENGTH 的不同之处在于,无论单个字符有多长,您总是会得到 1:

http://msdn.microsoft.com/en-us/library/ms190329.aspx

于 2009-02-17T18:25:23.823 回答
4

DATALENGTH 以字节为单位返回字符串的长度,包括尾随空格。LEN 返回字符长度,不包括尾随空格。例如,

SELECT LEN('string'), LEN('string'), DATALENGTH('string'), DATALENGTH('string'), LEN(N'string'), LEN(N'string'), DATALENGTH(N'string '), DATALENGTH(N'字符串 ')

将返回 6、6、6、9、6、6、12、18

于 2009-02-17T18:23:36.963 回答
2

Len() 将从数据中修剪(删除尾随空格)。

DataLength() 函数不

示例: Select Len('Test ') -- 这将返回 4

选择 DATALENGTH ('Test ') - 这将返回 5

FURTHERMORE(从其他奇妙而有用的答案汇总):

DATALENGTH 以 BYTES 为单位返回字符串的长度,包括尾随空格 http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx

LEN 返回 CHARACTERS 中的长度,不包括尾随空格 http://msdn.microsoft.com/en-us/library/ms190329.aspx

由于字符串可能包含 1 个或 2 个字节 (Unicode),因此使用任一字节的结果将取决于字符串的数据类型以及字符串中是否有尾随空格

例如,

SELECT LEN('string'), LEN('string'), DATALENGTH('string'), DATALENGTH('string'), LEN(N'string'), LEN(N'string'), DATALENGTH(N'string '), DATALENGTH(N'字符串 ')

将返回 6、6、6、7、6、6、12、14

于 2009-02-17T18:23:24.483 回答
0

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

于 2009-02-17T18:24:36.447 回答