SQLServer中求两个字符串的交集

使用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,

*/

时间: 2024-09-25 17:00:23

SQLServer中求两个字符串的交集的相关文章

SQLServer中求两个字符串的交集_MsSql

使用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 declar

如何求两个数组的交集

题目意思大概是这样的:给定两个大数组(1w以上1亿以下),用最有效的方法找出来两个数组的交集. 对于这道题,我有一个思路就是,先对数组进行排序,然后用两个指针在已排序的数组上轮流指向头结点,进行比较. 比较亮的地方,就是在于这个比较的方式了. 首先,比较的时候,要先确定两个指针指向的内用是否一致.如果一致,那么这个点,就是交集的一个元素,没问题吧? 这里有一个问题就是,接下来如何比较? 步骤是这样的:先比较两个指针指向内容的大小,指向结果小的指针,开始递增,直到较小的指针指向的值大于或等于另一个

oc ios-oc中如何截取特定字符串中某两串字符串之间的字符串

问题描述 oc中如何截取特定字符串中某两串字符串之间的字符串 譬如{"name":"lxy","type":"学生","id":86,"psw":"123","nickName":"lxy","telephone":null,"email":null,"top":nul

java实现字符串匹配求两个字符串的最大公共子串_java

本文实例讲述了java实现求两个字符串最大公共子串的方法.分享给大家供大家参考,具体如下: 最近在项目工作中有一个关于文本对比的需求,经过这段时间的学习,总结了这篇博客内容:求两个字符串的最大公共子串. 算法思想:基于图计算两字符串的公共子串.具体算法思想参照下图: 输入字符串S1:achmacmh    输入字符串S2:macham 第a步,是将字符串s1,s2分别按字节拆分,构成一个二维数组: 二维数组中的值如b所示,比如第一行第一列的值表示字符串s2和s1的第一个字节是否相等,若相等就是1

JAVA中获取两个字符串差异的方法

问题描述 JAVA中获取两个字符串差异的方法 求助,在编程的过程中碰到这样一个问题,有两个String字符串,然后我需要获取他们之间的差异 String s = {"12345"}; String s1 ={"123645"}; 其中这两个数组的长度可变,s是模板,所有的数组都要和这个数组比较,然后把差异的部分获取出来 所以s1可以是缺了一两个元素的数组,仅仅是单个的字符被替换了,这个可以简单的用字符数组一个一个比较获得,但是如果多一个,或者少一个,这一块我就有点不

java实现求两个字符串最长公共子串的方法_java

本文实例讲述了java实现求两个字符串最长公共子串的方法.分享给大家供大家参考,具体如下: 这个是华为OJ上的一道题目.首先,如果我们用java写代码,华为OJ有以下三条规则需遵守,否则编译无法通过或者用例无法通过,规则如下: (1)一定不可以有包名: (2)主类名只能为Main: (3)不可以输出与结果无关的信息. 好了,按照以上规则,我们写出来的代码如下(此代码不是最优的,只是用来记录华为OJ上java代码的书写规则): import java.util.Scanner; public cl

C语言求两个字符串的最长公共子串_C 语言

本文实例讲述了C语言求两个字符串的最长公共子串的方法.分享给大家供大家参考.具体实现方法如下: #include "stdio.h" #include "string.h" #include "stdlib.h" void getCommon(char str1[],char str2[],char * str3); int stringLength(char * str); void main(){ char str1[50]; char st

Oracle中对两个数据表交集的查询

oracle|数据 Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大.灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法. 下面向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法,笔者感到这两种方法执行效率高.使用方便. 第一种方法:利用操作符intersect intersect操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同.

EXCEL中求两个时间间隔多少小时的算法

今天收到学员来信要求计算两个时间点之间间隔多少小时的算法,同时还附带要求:每满30分钟按0.5小时计算,如25分钟为 0,45分钟只能计0.5小时.这个应用在计算加班工时中特别有用,现分享如下: 假设A列放置的是开始时间,B列放置是 结束时间,C列中求加班小时数. 开始时间 结束时间 加班小时数 ******** 8:00 ******** 16:00 8 ******** 8:00 ******** 15:30 7.5 ******** 16:00 ******** 0:00 8 ******