最近,当我在查询中使用len()来找出查询的长度时,我遇到了一个问题,len()没有计算值中的尾随空格。但datalength()也在计算尾随空格。
这是否意味着,如果我正在做一些操作,处理值的实际长度,那么我必须在len()上使用dalalength()。
例如:如果我需要一个特定值的值是10个字符的长度。也就是说,如果值是3个字符长度,我必须在它后面附加7个空格。
发布于 2009-07-20 04:26:35
是的,这正是你必须要做的。如果您只想获取除空格之外的字符数,则可以使用LEN()函数,而在所有其他情况下使用DATALENGTH()。
即使是LEN()文档中也有这样一条信息,即为了获得表示扩展的字节数,您应该使用DATALENGTH()
以下是指向MSDN文档的链接:
LEN()
DATALENGTH()
发布于 2009-07-20 04:28:33
注意。DATALENGTH返回使用的字节数,而不是字符数。
发布于 2009-07-20 14:20:52
len计算使用的字符数,而不是所需的存储空间,当您使用nvarchar而不是varchar时,这一点将更加明显
len也不计算尾随空格
看看这个
declare @v nchar(5)
select @v ='ABC '
select len(@v),datalength(@v)len的输出为3,而datalength的输出为10
https://stackoverflow.com/questions/1151693
复制相似问题