我正在SQL表中进行关键字搜索,在该表中,我希望搜索一组关键字word1, word2, ... , wordn,并在新列中找到这些关键字的标志实例。假设我在[Description]变量#TABLE中查找这些关键字,我使用的查询如下所示:
SELECT *
, (CASE WHEN [Description] LIKE '%word1%' THEN 'word1'
WHEN [Description] LIKE '%word2%' THEN 'word2'
...
WHEN [Description] LIKE '%wordn%' THEN 'wordn'
END) as Keywords
INTO #RESULTS_TABLE
FROM #TABLE现在,这个方法的问题是,我正在搜索的关键字被硬编码到代码中,这使得如果我想要更改正在搜索的关键字集变得不方便。不需要这样做,我希望将关键字作为变量#KEYWORDS在某个单独的表[words]中搜索,然后引用该表中列出的所有关键字(在该变量名下)进行搜索。这将允许我修改搜索表,然后在更新的搜索表上重新运行select查询,而不必更改select代码。
问题:假设我的表#KEYWORDS中填充了要搜索的关键字,那么编写关键字搜索查询的最佳方法是从表中获取关键字而不是硬编码的关键字?
发布于 2022-10-26 04:25:45
我的第一选择是临时桌:
create temporary table words_table (
words varchar
);
insert into words_table values
(word1),
(word2), -- etc for the rest of your rows然后你就可以:
select t.[Description]
from
your_table t
join words_table wt on
ON t.[Description] LIKE CONCAT('%',wt.words,'%')或
select t.[Description]
from
your_table t
join words_table wt
ON t.[Description] LIKE '%' + wt.words +'%'https://stackoverflow.com/questions/74202632
复制相似问题