我正在尝试基于另一个字段的结果在SQL Server 2016中进行全文本搜索
查询文本“ CSN”时可以得到结果,但是如何将“ CSN”更改为一列中的所有结果,而不仅仅是一个文本结果?
例如,工作表列中的所有项目是否等于另一个表中名为SX的列中的所有结果?
SELECT * FROM dbo.sheet WHERE CONTAINS(sheet, 'CSN')
据我所知,无法使用列引用作为中的搜索词CONTAINS。但是,如果您设法将搜索词放入变量中,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联接到表值函数的结果。
SELECT ... WHERECONTAINS(sheet, @funcParam)
CROSS APPLY