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

解决方案 »

  1.   

    不是呀,我定义成char()型也是这样呀。declare @a char(50)
    set @a='              '   --这是全是空格,全角或半角的都有
    if @a=''
    print '相等'
    else
    print '不相等'
      

  2.   

    SELECT SOUNDEX(''),
      SOUNDEX('   '), DIFFERENCE('','   ')--
    0000 0000  4
    4 表示 SOUNDEX 值相同
      

  3.   

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

  4.   

    declare @a varchar(5)
    set @a='     ' --这里放一个全角或半角空格
    if len(@a)=0
    print '相等'
    else
    print '不相等'
    -----------
    不相等
    =================
    谢谢,不过我问的是,用等号比较为何是相等的
      

  5.   

    declare @a varchar(5)
    set @a='     ' --这里放一个全角或半角空格
    if len(@a)=0
    print '相等'
    else
    print '不相等'=============
    老大,不对吧,你只加几个半角空格试试,结果是相等,所以这个方法是不行的
    如果一定含有全角空格,用len()比较会是不相等的.
      

  6.   

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

  7.   

    是的,全角空格,半角空格同等对待,不知为何这样设计declare @q varchar(10)
    set @q='a  a' --这里两个全角空格
    print replace(@q,' ','|')  --这里是半角空格--result
    --a||a