首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这是SQL Server 的 Bug 吗,求解释呀求解释~解决方案

2013-11-25 
这是SQL Server 的 Bug 吗,求解释呀求解释~~PS: space(n)表示由n个空格组成的字符串,space(0)就是另外我

这是SQL Server 的 Bug 吗,求解释呀求解释~~


PS: space(n)表示由n个空格组成的字符串,space(0)就是''
    另外我使用的是2008R2
[解决办法]
select len(space(4))
select len(space(100))
/*
0
*/

结果都是:0
从这里你可以找出答案了
[解决办法]
你的疑问一句话就可以解答:

SQL SERVER在字符串比较时会忽略后面的空格

至于LEN,这个是函数内的处理机制,计算长度时忽略后面的空格
[解决办法]
引用:
Quote: 引用:

我发现,这些个函数,比如:len都会把字符串转化为varchar或者nvarchar,然后再进行计算,这里的代码,:

select LEN(cast(SPACE(1)+'aaa' as char)),
       LEN(cast('aaa'+SPACE(1) as CHAR))
/*
43
*/  


而一旦转化为varchar或nvarchar,那么自动就会忽略尾部的空格了
char类型之间的比较和算len()也是会忽略尾随空格的,不懂为什么微软要这样处理


还真是,我试了一下,确实是像你说的,char也会忽略尾部的空格:

select case when CAST('aa' AS char) = CAST('aa ' AS CHAR)
                 then 1
            else 0
       end
/*
1
*/

热点排行