首页 > 解决方案 > 从 SQL 中的字符串中提取关键字

问题描述

我想在 SQL 服务器中编写一个 SQL 查询,从包含字符串值的列中提取某些关键字。关键字位于另一个表中 - (KEYWORDS)。另外,如果在同一个字符串中找到多个关键字,我希望显示所有找到的关键字。

鸡蛋

KEYWORDS -- Tom, Doctor, coach, value
TEXT -- Hi coach, tom here

最终 O/p:

**TEXT**                           
Hi coach, tom here  

**KEYWORDS_EXTRACTED**
coach, tom

标签: sqlsql-server

解决方案


declare @k table(thekeyword varchar(50));
insert into @k(thekeyword) values ('Tom'), ('Doctor') , ('coach'), ('value');

declare @t table(thetext varchar(1000));
insert into @t(thetext) values('Hi coach, tom here'), ('Tom visited the doctor'), ('minicoach or minibus?'), ('Tomas says hi')

select *
from @t as t
outer apply
(
    select
    stuff(
    (select ',' + k.thekeyword
        --string_agg(k.thekeyword, ',') as thekeywords
    from @k as k
    where ' ' + t.thetext + ' ' like '%[^A-Za-z]'+k.thekeyword+'[^A-Za-z]%' --adjust
    for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as thekeywords
) as kw;

推荐阅读