新手问题,为何一个全角或半角空格与空串''比较,结果是相等呢?用等于号比较
新手问题,为何一个全角或半角空格与空串 ' '比较,结果是相等呢?用等于号比较 
 --------- 
 代码如下: 
 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