SQL判断相等问题,急....

赵凯~ 2007-06-16 12:04:15
在SQLServer里有俩个字符串@a=',2,4,7' @b=',7,2,4'怎么判断他俩相等啊.我的意思是,只要@a和@b里面的数字相同就认为他俩相等,和顺序没关系.

谢谢了.直接if(@a=@b)是肯定不行的啊,该如何判断才能让他俩相等啊...
...全文
1524 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshiwct 2007-06-18
  • 打赏
  • 举报
回复
用split函數試試看。
firefoxh 2007-06-18
  • 打赏
  • 举报
回复
declare @a varchar(10),@b varchar(10)
set @a=',2,4,7'
set @b=',7,2,4'

SELECT * FROM dbo.fn_split(@a,',')
SELECT * FROM dbo.fn_split(@b,',')

生成的两个结果集,有什么好的方法直接给出比较结果嘛?
hellowork 2007-06-18
  • 打赏
  • 举报
回复
TO: firefoxh(菜鸟)

对于
set @a=',3,4,6'
set @b=',7,2,4' 也成立啊

所以不能直接通过ASCII转码来比较
--------------------------------------------------

的确这样,多谢提醒和指正!
ice241018 2007-06-18
  • 打赏
  • 举报
回复
学习
firefoxh 2007-06-18
  • 打赏
  • 举报
回复
用split函数拆分两个串,比较两个结果集的异同。




/*
功能:实现split功能的函数
*/

create function fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as

begin
declare @i int

set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)

while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))

set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end

if @inputstr <> '\'
insert @temp values(@inputstr)

return
end


这个比较具有操作性,顶一下。
OracleRoob 2007-06-18
  • 打赏
  • 举报
回复
用split函数拆分两个串,比较两个结果集的异同。




/*
功能:实现split功能的函数
*/

create function fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as

begin
declare @i int

set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)

while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))

set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end

if @inputstr <> '\'
insert @temp values(@inputstr)

return
end



firefoxh 2007-06-18
  • 打赏
  • 举报
回复
楼上的函数是不对的。

ASC的合计值的比较对于
set @a=',2,4,7'
set @b=',7,2,4' 是成立的

对于
set @a=',3,4,6'
set @b=',7,2,4' 也成立啊

所以不能直接通过ASCII转码来比较
yandebin2006 2007-06-17
  • 打赏
  • 举报
回复
真的
lyjun_311 2007-06-17
  • 打赏
  • 举报
回复
四钻,真牛!
hellowork 2007-06-16
  • 打赏
  • 举报
回复
if object_id('fnTest_ASC') is not null
drop function fnTest_ASC
GO
----创建字符ASCII码值计算函数
create function fnTest_ASC(@str varchar(100))
returns int
as
begin
declare @asc int
set @asc = 0
while @str <> ''
begin
set @asc = @asc + ascii(substring(@str,1,1))
set @str = stuff(@str,1,1,'')
end
return @asc
end
GO

----比较字符串
declare @a varchar(10),@b varchar(10)
set @a=',2,4,7'
set @b=',7,2,4'
select case when dbo.fnTest_ASC(@a) = dbo.fnTest_ASC(@b) then '相等' else '不相等' end

----清除测试环境
drop function fnTest_ASC

/*结果
相等
*/
zjcxc 元老 2007-06-16
  • 打赏
  • 举报
回复
拆了按顺序比较一次就行了
hui_hui_2007 2007-06-16
  • 打赏
  • 举报
回复
楼上函数不错.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧