日期:2014-05-18  浏览次数:20720 次

新手问题,为何一个全角或半角空格与空串''比较,结果是相等呢?用等于号比较
新手问题,为何一个全角或半角空格与空串 ' '比较,结果是相等呢?用等于号比较
---------
代码如下:
declare   @a   varchar(5)
set   @a= '      '         --这里放一个全角或半角空格
if   @a= ' '
print   '相等 '
else
print   '不相等 '

结果确是相等,真是不解。


------解决方案--------------------
SELECT SOUNDEX( ' '),
SOUNDEX( ' '), DIFFERENCE( ' ', ' ')

--
0000 0000 4
4 表示 SOUNDEX 值相同
------解决方案--------------------
declare @a varchar(5)
set @a= '      ' --这里放一个全角或半角空格
if len(@a)=0
print '相等 '
else
print '不相等 '


-----------
不相等
------解决方案--------------------
declare @a varchar(5)
set @a= '      ' --这里放一个全角或半角空格
if len(@a)=0
print '相等 '
else
print '不相等 '

=============
老大,不对吧,你只加几个半角空格试试,结果是相等,所以这个方法是不行的
如果一定含有全角空格,用len()比较会是不相等的.

------解决方案--------------------
--我也不解,以前我就因为替换所有的英文空格为 ' ',结果把所有的中文空格也给替换为空了,幸好有备份。
declare @a char(5)
set @a= '      ' --这里放一个全角或半角空格
if @a= ' '
print '相 '+@a+ '等 '

else
print '不相等 '
------解决方案--------------------
全角或半角空格 相等
是因为 排序规则的 原因
你用拉丁排序 就不一样
------解决方案--------------------
是的,全角空格,半角空格同等对待,不知为何这样设计

declare @q varchar(10)
set @q= 'a  a ' --这里两个全角空格
print replace(@q, ' ', '| ') --这里是半角空格

--result
--a||a