当前位置:  开发笔记 > 数据库 > 正文

为什么SQL Server 2005会随机截断空白?

如何解决《为什么SQLServer2005会随机截断空白?》经验,为你挑选了1个好方法。

以下T/SQL: -

create table #temp(foo varchar(10))

insert into #temp select ''
insert into #temp select 'abc'
insert into #temp select ' '

select len(foo) from #temp where foo = '  '

drop table #temp

返回两个0,尽管标准意味着它应该什么都不返回.此外,它返回两个空白行的长度,其中一个确实长度为0,但也是一个长度为1的行,报告长度为0.

有谁知道这里发生了什么?!

更新:在此知识库文章中,这与Microsoft所涵盖的ANSI_PADDING数据库选项相关.



1> G Mastros..:

根据文件:

返回指定字符串表达式的字符数,不包括尾随空格.

你应该熟悉一个名为DataLength的类似函数.

create table #temp(foo varchar(10))

insert into #temp select ''
insert into #temp select 'abc'
insert into #temp select ' '

select len(foo), DataLength(foo) from #temp where foo = '  '

drop table #temp

删除尾随空格也是为了进行比较.您可以通过将数据转换为varbinary并以此方式进行比较来实现此目的.如果你这样做,我会单独留下原始比较(出于可怜的原因).

create table #temp(foo varchar(10))

insert into #temp select ''
insert into #temp select 'abc'
insert into #temp select ' '

select len(foo), DataLength(foo) 
from    #temp 
where   foo = ' '
        and Convert(varbinary(8), foo) = Convert(VarBinary(8), ' ')

drop table #temp

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有