比较两个字符串sql server 2008中所有可能的子字符串

时间:2016-08-17 05:21:52

标签: sql sql-server sql-server-2008

我有一个包含列和值的表JobSkill =" .net sap lead"。现在,用户输入值" abap sap hana"。我想要包含一个where条件,它恰好匹配3个或更多连续字符,包括空格。在上面的场景中,两者都有共同的" sap" substring所以条件应该导致true。以下是我的查询。请帮忙。以前我使用的是charindex,但它没有解决目的。我正在使用sql server 2008

SELECT Email_Id, JobSkill FROM Jobs
WHERE CHARINDEX(JobSkill, "abap sap hana") > 0

2 个答案:

答案 0 :(得分:1)

你需要创建一个循环遍历String1的所有字符位置的函数,除了最后2个,并检查String2是否像'%' + [(x,x + 1,x + 2)] +'%' string,其中x是当前位置。

所以对于叮咬(' abcd acd g',' ert acd'),

应检查

'ert acd' like '%abc%'
'ert acd' like '%bcd%'
'ert acd' like '%cd %'
'ert acd' like '%d a%'

依旧......

如果like返回TRUE,则打破循环。

答案 1 :(得分:0)

试试这个,

SELECT j.Email_Id
    ,j.JobSkill
FROM Jobs j
INNER JOIN (
    SELECT LTRIM(RTRIM(m.n.value('.[1]', 'varchar(8000)'))) SearchString
    FROM (
        SELECT CAST('<XMLRoot><RowData>' + REPLACE(@Input, ' ', '</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x
        ) t
    CROSS APPLY x.nodes('/XMLRoot/RowData') m(n)
    ) T ON j.JobSkill LIKE '%' + T.SearchString + '%'