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