所以我宣布了一张桌子:
DECLARE @VTable TABLE (ColtoAdj VARCHAR(50),HeadlineDescription
VARCHAR(50),HeadlineDescriptionGroup VARCHAR(50));
INSERT INTO @VTable VALUES ('Neopla','Neoplasia','Cancer');
INSERT INTO @VTable VALUES ('Metasta','Metastases','Cancer');
INSERT INTO @VTable VALUES ('CES','CES','Cauda Equina');
INSERT INTO @VTable VALUES ('CES-I','CES-I','Cauda Equina');
然后在主表的Outter应用中使用,以查找标题描述和标题描述组。
OUTER APPLY (
SELECT TOP 1
vt.ColtoAdj,
Vt.HeadlineDescription,
Vt.HeadlineDescriptionGroup
FROM @VTable AS vt
WHERE cmd.Headline LIKE ('%' + vt.ColtoAdj + '%')
对于我的大部分数据而言,它工作正常,因为很多vt.ColtoAdj查找字是唯一的,例如有一个hyphon等,所以只是拉。问题是CES值。这可能是255个字符标题中的任何位置。所以它目前正在采取类似于" BraCES"并错误地添加它。我试图为它插入2个值' CES'或者' CES '只是得到缩写但这仍然抓住以其结尾或开始的单词。无论如何,这个值在表中我可以让它自己找到3个字母,但也搜索其他的完整单词?
这可能是一个不行的情况,仅仅因为它的功能和单词查找你不能保证100%的准确性,但我想我会检查。
答案 0 :(得分:2)
如果您正在寻找单词边界并且单词以空格为界,您可以使用:
WHERE ' ' + cmd.Headline + ' ' LIKE '% ' + vt.ColtoAdj + ' %'
答案 1 :(得分:0)
我只能想到一个案例解决方案:
WHERE
(
(cmd.Headline LIKE ('%' + vt.ColtoAdj + '%') and vt.ColtoAdj<>'CES')
OR
(cmd.Headline='CES' and vt.ColtoAdj='CES')
)