Len()vs SQL Server 2005中的datalength()

Aru*_*hny 32 sql-server datalength

最近我len()在查询中使用查找查询的长度时遇到了一个问题,len()不计算值中的尾随空格.但是datalength()也在计算尾随空间.

这是否意味着,如果我做了一些操作与价值的实际长度涉及然后我不得不使用dalalength()len().

例如:如果我需要特定值的值是10个字符长度.即如果值为3个字符长度,我要向其附加7个空格.

问候

Joe*_*ung 36

小心. DATALENGTH返回使用的字节数,而不是字符数.

  • NVARCHAR字段上的+1 LEN返回字符串中的字符数,而DATALENGTH()返回该数字的两倍(因为NVARCHAR每个字符存储2个字节) (8认同)

RaY*_*ell 21

是的,这正是你必须做的.如果你想获得除空格之外的字符数,你可以使用LEN()函数,而在所有其他情况下DATALENGTH().

甚至LEN()文档都有一个信息,可以获得代表您应该使用的扩展名的字节数DATALENGTH()

以下是MSDN文档的链接:

LEN()

DATALENGTH()

  • @marc_s ...但它不计算尾随空格.LEN('HELLO'),LEN('HELLO')和LEN('HELLO')连续返回5,5和10.这是记录(""). (6认同)

SQL*_*ace 11

len计算使用的字符数而不是所需的存储空间,当使用nvarchar而不是varchar时,这将更加明显

len也不计算尾随空格

看看这个

declare @v nchar(5)
select @v ='ABC  '


select len(@v),datalength(@v)
Run Code Online (Sandbox Code Playgroud)

len的输出为3,而datalength的输出为10