一尘不染

使用另一列作为搜索词的SQL Server全文本搜索

sql

我正在尝试基于另一个字段的结果在SQL Server 2016中进行全文本搜索

查询文本“ CSN”时可以得到结果,但是如何将“ CSN”更改为一列中的所有结果,而不仅仅是一个文本结果?

例如,工作表列中的所有项目是否等于另一个表中名为SX的列中的所有结果?

SELECT *
FROM dbo.sheet
WHERE CONTAINS(sheet, 'CSN')

阅读 139

收藏
2021-05-16

共1个答案

一尘不染

据我所知,无法使用列引用作为中的搜索词CONTAINS。但是,如果您设法将搜索词放入变量中,CONTAINS则将接受它:

DECLARE @searchTerm VARCHAR(10) = 'CSN'
SELECT *
FROM dbo.sheet
WHERE CONTAINS(sheet, @searchTerm)

或者

DECLARE @searchTerm VARCHAR(10) = ''
SELECT TOP 1 @searchTerm=SX FROM table2 WHERE ...

SELECT *
FROM dbo.sheet
WHERE CONTAINS(sheet, @searchTerm)

另一种方法可能是创建用户定义的函数,该函数将返回带有搜索结果的表,并将搜索项作为参数传递给该表。在函数内部,您将调用SELECT ... WHERECONTAINS(sheet, @funcParam)。然后,您将不得不使用CROSS APPLY联接到表值函数的结果。

2021-05-16