当我运行此查询时:
Select * from Table1 Where Column1 Like 'aaa%' --3 Result
Select * from Table1 Where Column1 Like 'a%' --3 Result
Select * from Table1 Where Column1 Like 'A%' --3 Result
但当我跑步时
Select * from Table1 Where Contains(Column1 ,'aaa') --3 Result
Select * from Table1 Where Contains(Column1 ,'a') --0 Result
Select * from Table1 Where Contains(Column1 ,'A') --0 Result
CONTAINS
可以搜索:根据 MSDN
- 一个词或短语。
- 单词或短语的前缀。
- 一个词靠近另一个词。
这是否意味着Contains
无法搜索字母?
如果是,那么如何?
Edit2:
declare @param as varchar(20)='a'
select * from table1 where Contains(column1,@param)
这是工作,
declare @param as varchar(20)='"a*"'
select * from table1 where Contains(column1,@param)
但是,这不是
declare @param as varchar(20)='a'
select * from table1 where Contains(column1,@param+'*')
And,
select * from table1 where Contains(column1,'"'+@param+'*"')
您需要使用星号来执行前缀搜索:
WHERE CONTAINS(Column1 , ' "a*" ');
WHERE CONTAINS(Column1 , ' "A*" ');
除此之外,CONTAINS
受停用词过滤器的影响。阅读这些内容here
停用词可以是在特定语言中具有含义的单词,也可以是
可以是没有语言意义的标记。例如,在
英语中,“a”、“and”、“is”和“the”等词是
被排除在全文索引之外,因为众所周知它们对于
一次搜索。
要将输入作为参数传递,只需附加星号:
declare @SearchThis varchar(10) = 'A';
set @SearchThis = quotename(@SearchThis + '*', '"');
select @SearchThis;
一旦您完成了 SearchThis 设置,您就可以在以下位置使用:
WHERE CONTAINS(Column1, @SearchThis)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)