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

如何实现字符串的精确比较,即'abc '与'abc'比较结果是不同的?
如何实现字符串的精确比较,即 'abc         '与 'abc '比较结果是不同的?
---------
我试过, 'abc             '与 'abc '用等号比较结果是相等的。
用什么方法比较结果是不同的呢?
还有:为何用等号比较不能实现精确比较呢?


------解决方案--------------------
你把右边加个字符啊例如“;”
'abc '+ '; ' 不等于 'abc '+ '; '
------解决方案--------------------
我觉得是当前的排序规则造成的,你试着修改一下排序规则。
------解决方案--------------------
kadboy(想结交朋友 Q:7680941 guangzhouwy@126.com) ( ) 信誉:100 Blog 2007-03-29 13:11:50 得分: 0


你把右边加个字符啊例如“;”
'abc '+ '; ' 不等于 'abc '+ '; '


正确.

或 'abc ' = 'abc ' and len( 'abc ') = len( 'abc ')
------解决方案--------------------
用len()好像不行的,len()會把後面的空格去掉
print len( 'abc ')
----
3

--可以用like來比較,
if 'abc ' like 'abc '
print 1
else
print 0

-----
0

--但是like只適用比較後面那個子串帶空格,反過來就比不了
if 'abc ' like 'abc '
print 1
else
print 0

----------
1
------解决方案--------------------
To wojila(阳阳)
-----------
你abc和aaa比,當然false了
------解决方案--------------------
两个字符串各加个一个同样的字符进行比较

declare @a varchar(20),@b varchar(20)
set @a= 'abc '
set @b= 'abc '
if @a+ '1 '=@b+ '1 '
print 'ture '
else
print 'false '


(所影响的行数为 1 行)

false

------解决方案--------------------
declare @s1 varchar(10),@s2 varchar(10)
set @s1= 'aaa '
set @s2= 'aaa '

--可以用下面比较(结果是不等)
if @s1+ '1 '=@s2+ '1 '
print '1 '
else
print '0 '

--不能用下面比较(结果是相等)
if @s1=@s2 and len(@s1)=len(@s2)
print '1 '
else
print '0 '

------解决方案--------------------
-- 如何实现字符串的精确比较,即 'abc '与 'abc '比较结果是不同的?

declare @a varchar(100)
declare @b varchar(100)

set @a= 'abc '
set @b= 'abc '

--常规判断认为相等
if @a=@b
print '相等 '
else
print '不相等 '


--后面加字符进行判断,即不相等

if @a + 'a ' = @b + 'a '
print '相等 '
else
print '不相等 '