Sql:多个关键字搜索投诉数据集

时间:2016-07-18 16:55:31

标签: sql sql-server sql-server-2008 dictionary keyword-search

我正在处理投诉数据集&我正在寻找关键字字典中与数据集匹配的关键字。

这是关键字词典 -

示例关键字词典

-------------------------

借记卡

信用卡

ATM

贷款

示例数据集

enter image description here

并且,示例输出 -

enter image description here

也就是说,我希望关键字词典中的关键字与我的数据集中的“投诉描述”列相匹配。并且,我希望只有匹配的关键字才能显示在“关键字匹配”栏中。 “计数”列中匹配的总关键字数。

这只是一个样本&我的实际数据集是巨大的,它也可能涉及外语的“投诉描述”。你能帮我解决一下吗?

非常感谢!!

1 个答案:

答案 0 :(得分:3)

假设您的示例数据表格为[Sample Data-set],并且您的关键字已保存在名为[Keyword]的表格中(列名为Keyword)。试试这个:

WITH CTE AS
(
SELECT Detail.*, [Keywords Matched] = STUFF((select ',' + Keyword
    FROM KEYWORD as b
    WHERE Detail.[Complaint Description] like '%' + b.Keyword + '%'
    ORDER BY Keyword DESC
    FOR XML PATH('')), 1,1,'')
FROM [Sample Data-set] as Detail
GROUP BY Detail.BranchID, Detail.Portfolio, Detail.[Complaint Description]
)
SELECT *, len([Keywords Matched]) - len(replace([Keywords Matched], ',','')) + 1 as [Count]
FROM CTE
GROUP BY  BranchID, Portfolio, [Complaint Description], [Keywords Matched]