【发布时间】:2009-02-17 18:21:08
【问题描述】:
SQL Server 2005 中的 len() 和 datalength() 有什么区别?
【问题讨论】:
标签: sql-server sql-server-2005 datalength
SQL Server 2005 中的 len() 和 datalength() 有什么区别?
【问题讨论】:
标签: sql-server sql-server-2005 datalength
DATALEN 将返回用于存储值的字节数:
http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx
LEN 将返回字符串中的字符数。由于字符串可以使用单字节或双字节字符,这与 DATALENGTH 的不同之处在于,无论单个字符有多长,您总是会得到 1:
【讨论】:
DATALENGTH 以字节为单位返回字符串的长度,包括尾随空格。 LEN 返回字符长度,不包括尾随空格。例如,
选择 LEN('字符串'), LEN('字符串'), 数据长度('字符串'), DATALENGTH('字符串'), LEN(N'字符串'), LEN(N'字符串'), 数据长度(N'字符串'), DATALENGTH(N'string ')
将返回 6、6、6、9、6、6、12、18
【讨论】:
Len() 将从数据中修剪(删除尾随空格)。
DataLength() 函数没有
示例: 选择 Len('测试') -- 这将返回 4
选择 DATALENGTH('测试') -- 这将返回 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) 组成,因此使用任一字节的结果将取决于字符串的数据类型以及字符串中是否有尾随空格
例如,
选择 LEN('字符串'), LEN('字符串'), 数据长度('字符串'), DATALENGTH('字符串'), LEN(N'字符串'), LEN(N'字符串'), 数据长度(N'字符串'), DATALENGTH(N'string ')
将返回 6、6、6、7、6、6、12、14
【讨论】:
对于字符串,datalength() 返回字节数,len() 返回字符数的整数值。
【讨论】: