有没有方法能够找出两个字符串中相同的部分。、
如string str1 = '上班迪斯科---睡觉的说法--打瞌睡--离开家--'
  string str2 = '时代科技覅和--老江湖--打湿了--打瞌睡--斯达克是' 找出的结果是:打瞌睡 就这样,怎么做呢(用sql 或 C# 程序 均可)

解决方案 »

  1.   

    方法:拆分,匹配。给你个函数:http://blog.csdn.net/htl258/archive/2010/04/29/5537235.aspx
      

  2.   

    用分解字符串函数.
    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 行)*/
      

  3.   

    参考
    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 行)*/