我有一个带varchar(max)字段的表,我需要对它进行文本搜索。具体来说,我需要找到整个单词。我试过了
Select * From MyTable
Where Col = @SearchTxt
Or Col Like @SearchTxt + ' %'
Or Col Like '% ' + @SearchTxt + ' %'
Or Col Like '% ' + @SearchTxt
这在一定程度上起作用,但它没有给出SearchTxt在标点符号之前或之后的实例(如SearchTxt!或SearchTxt)
有没有一种相当简单的方法来获得我正在寻找的东西,而没有一大堆where子句?此外,该列未编入索引,虽然速度不是主要问题,但我希望查询运行得相当快
答案 0 :(得分:2)
你可以这样做:
SELECT <ColumnsList>
FROM MyTable
WHERE Col = @SearchText
OR Col LIKE @SearchTxt + '[^A-Za-z]%'
OR Col LIKE '%[^A-Za-z]' + @SearchTxt + '[^A-Za-z]%'
OR Col LIKE '%[^A-Za-z]' + @SearchTxt
如需进一步阅读,请参阅Microsoft Pattern Matching in Search Conditions
上的文档答案 1 :(得分:0)
--Try this code it may meet your requirement
DECLARE @SearchTxt Varchar(20)='SearchWord'
SELECT TOP 1 * from #TempTable
WHERE CHARINDEX(@SearchTxt,CONCAT(Column1,Column2,Column3,Column4))>0