SQL语句查找整个单词

时间:2017-03-24 05:49:20

标签: sql-server

我有一个带varchar(max)字段的表,我需要对它进行文本搜索。具体来说,我需要找到整个单词。我试过了

Select * From MyTable 
Where Col = @SearchTxt
Or    Col Like @SearchTxt + ' %'
Or    Col Like '% ' + @SearchTxt + ' %'
Or    Col Like '% ' + @SearchTxt

这在一定程度上起作用,但它没有给出SearchTxt在标点符号之前或之后的实例(如SearchTxt!或SearchTxt)

有没有一种相当简单的方法来获得我正在寻找的东西,而没有一大堆where子句?此外,该列未编入索引,虽然速度不是主要问题,但我希望查询运行得相当快

2 个答案:

答案 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