【问题标题】:In SQL Server 2005, what is the difference between len() and datalength()?在 SQL Server 2005 中,len() 和 datalength() 有什么区别?
【发布时间】:2009-02-17 18:21:08
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      选择 LEN('字符串'), LEN('字符串'), 数据长度('字符串'), DATALENGTH('字符串'), LEN(N'字符串'), LEN(N'字符串'), 数据长度(N'字符串'), DATALENGTH(N'string ')

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

      【讨论】:

      • 我得到了 6、6、6、7、6、6、12、14
      【解决方案3】:

      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

      【讨论】:

      • +1 与工作示例和编译其他答案的区别。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-14
        • 2012-03-22
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多