Welcome to itblog

Every Day In Every Way I Am Getting Better And Better~

字符串比较

表的一个字段varchar类型,select * from a where f1=@var(传入参数)
f1比如为"AA,BGF,YH",@var为"BGF,YH,AA".也就是说相同的值,只是排列顺序不同.
怎么写个简单函数来判断相等?当然可以SUBSTRING()一个一个取来判断,显得比较麻烦.

--创建用户定义函数
create function f_StrCmp(
@strA    varchar(1000),   --源字符串
@strB    varchar(1000),   --目的字符串
@separator varchar(10))   --分隔符
returns int  --1:匹配一致;else:匹配不一致
as
begin
    while charindex(@separator,@strB)>0
    begin
        if charindex(@separator+left(@strB,charindex(@separator,@strB)-1)+@separator,@separator+@strA+@separator)=0
            return 0
        set @strB=stuff(@strB,1,charindex(@separator,@strB)+len(@separator)-1,'')
    end
    return 1
end
go

--调用示例:
select dbo.f_StrCmp('AAAA,BBBB,CCCC','CCCC,BBBB,AAAA',',')
select dbo.f_StrCmp('AAAA,BBB,CCCC','CCCC,BBBB,AAAA',',')
go

--楼主的SQL可修改为:select * from a where dbo.f_StrCmp(f1,@var,',')=1

--删除用户定义函数
drop function f_StrCmp

阅读更多
文章标签: function go sql
个人分类: 精典SQL语句收藏
上一篇数据分组问题
下一篇两台SQL Server数据同步解决方案
想对作者说点什么? 我来说一句

字符串比较处理宏 超级好用

2011年04月24日 46KB 下载

oc字符串比较

2013年10月15日 11KB 下载

C字符串比较源代码

2012年10月16日 240B 下载

switch不能字符串比较解决方法

2017年01月09日 657B 下载

没有更多推荐了,返回首页

关闭
关闭