SQLServer中求两个字符串的交集

来源:互联网 发布:什么是淘宝内容营销 编辑:程序博客网 时间:2024/05/16 12:59
代码高亮有点问题,测试时把@ str替换为@str

使用javascript的数组来计算,代码如下:
use  tempdb
go
if (object_id ('fn_getArray' ) is not null )
    drop function dbo . fn_getArray
go
create function fn_getArray (@inStr1   varchar (8000 ),@inStr2 varchar (8000 ))
returns   varchar (8000)
as
begin
    declare @str   varchar (8000 )
    set @str = '
        var a = ['''+replace(@inStr1,',',''',''')+'''];
        var b = ['''+replace(@inStr2,',',''',''')+'''];
        var c=""
        for   (var   i=0;i<a.length;i++)
        {
            for   (var   j=0;j<b.length;j++)
            {    if(a[i]==b[j]&&c.indexOf(a[i])<0)
                    c+=a[i]+","
            }
        }
        '
    declare @object int
    declare @r varchar (800 )
    exec sp_OACreate 'MSScriptControl.ScriptControl' ,@object output  
    exec sp_OASetProperty @object , 'Language' , 'javascript'
    exec sp_OAMethod @object , 'eval' , @r out , @str
    return @r
end
go
select dbo.fn_getArray ('abc,dced,f23e,gew432','23c,abc,f23e,geafd,ged' )


/* 输出
    abc,f23e,
*/
原创粉丝点击