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

时间:2009-02-17 18:21:09

标签: sql-server sql-server-2005 datalength

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

4 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:4)

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

选择   LEN( '字符串'),   LEN('string'),   DATALENGTH( '字符串'),   DATALENGTH('string'),   LEN(N'string'),   LEN(N'string'),   DATALENGTH(N'string'),   DATALENGTH(N'string')

将返回6,6,6,9,6,6,12,18

答案 2 :(得分:2)

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

由于字符串可能包含一个或两个字节(Unicode),因此使用它们的结果将根据字符串的数据类型和字符串中是否有尾随空格而有所不同

例如,

选择     LEN( '字符串'),     LEN('string'),     DATALENGTH( '字符串'),     DATALENGTH('string'),     LEN(N'string'),     LEN(N'string'),     DATALENGTH(N'string'),     DATALENGTH(N'string')

会回来 6,6,6,7,6,6,12,14

答案 3 :(得分:0)

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