我有一个包含列和值的表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
答案 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 + '%'