有没有方法能够找出两个字符串中相同的部分。、
如string str1 = '上班迪斯科---睡觉的说法--打瞌睡--离开家--'
string str2 = '时代科技覅和--老江湖--打湿了--打瞌睡--斯达克是' 找出的结果是:打瞌睡 就这样,怎么做呢(用sql 或 C# 程序 均可)
如string str1 = '上班迪斯科---睡觉的说法--打瞌睡--离开家--'
string str2 = '时代科技覅和--老江湖--打湿了--打瞌睡--斯达克是' 找出的结果是:打瞌睡 就这样,怎么做呢(用sql 或 C# 程序 均可)
create function dbo.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
go--调用
select * from
(
select * from dbo.fn_split('上班迪斯科-睡觉的说法-打瞌睡-离开家','-')
union all
select * from dbo.fn_split('时代科技覅和-老江湖-打湿了-打瞌睡-斯达克是','-')
) t
group by a having count(1) > 1drop function dbo.fn_split /*
a
---------------------
打瞌睡(所影响的行数为 1 行)*/
CREATE TABLE atest(id INT, qy varchar(100))
INSERT atest select 1 ,'广州双一乳胶'
UNION ALL SELECT 2 ,'湖南金博科技有限责任公司'
GO
CREATE FUNCTION GetSS(@p varchar(100),@q varchar(100))
RETURNS BIT
AS
BEGIN
DECLARE @min varchar(100),@max varchar(100)
DECLARE @I INT,@Step INT
DECLARE @r BIT
SET @r=0
SELECT @I=1,@Step=0
IF len(@p)<len(@q)
SELECT @max=@q,@min=@p
ELSE
SELECT @max=@p,@min=@q
WHILE @I<=len(@min)
BEGIN
IF charindex(substring(@min,@I,1),@max)>0
SET @Step=@Step+1
SET @I=@I+1
END
IF @Step<>0 AND @Step>=len(@min)/2
SET @r=1
RETURN @r
END
GO
DECLARE @a varchar(100)
SET @a='湖南科技'
SELECT * FROM atest WHERE dbo.getss(@a,qy)=1
SET @a='广州广橡集团有限公司双一乳胶厂'
SELECT * FROM atest WHERE dbo.getss(@a,qy)=1--result
/*id qy
----------- ------------------------------
2 湖南金博科技有限责任公司(所影响的行数为 1 行)id qy
----------- ------------------------------
1 广州双一乳胶(所影响的行数为 1 行)*/