我正在尝试在SQL server 2016中基于另一个字段的结果进行全文搜索
当我查询文字' CSN'时,我能够获得结果,但是如何更改' CSN'列中的所有结果,而不仅仅是一个文本结果?
例如,工作表列中的所有项目是否等于另一个表中名为SX的列中的所有结果?
SELECT *
FROM dbo.sheet
WHERE CONTAINS(sheet, 'CSN')
答案 0 :(得分:1)
据我所知,无法在CONTAINS
中使用列引用作为搜索词。但是,如果您设法将搜索字词变为变量,那么CONTAINS
将接受它:
DECLARE @searchTerm VARCHAR(10) = 'CSN'
SELECT *
FROM dbo.sheet
WHERE CONTAINS(sheet, @searchTerm)
OR
DECLARE @searchTerm VARCHAR(10) = ''
SELECT TOP 1 @searchTerm=SX FROM table2 WHERE ...
SELECT *
FROM dbo.sheet
WHERE CONTAINS(sheet, @searchTerm)
另一种方法可能是创建一个用户定义的函数,该函数将返回一个包含搜索结果的表,并将搜索项作为参数传递给它。在函数内部,您将调用SELECT ... WHERE CONTAINS(sheet, @funcParam)
。然后,您必须使用CROSS APPLY
加入表值函数的结果。