我有一个名为Emre Can的player表Player。但是,我无法使用contains获得它,如下所示:
SELECT [Id], [Name]
FROM [Player]
where contains(name,'"*Can*"') -- show 10 results without emre can何塞·卡尼亚,洛里克·卡纳但是埃姆雷不能
但是,如果我使用
SELECT [Id],[Name]
FROM [Player]
where name like '%Can%' -- work fine??
where contains(name,'"*Emre*"') -- also works fine更新:似乎Can被列在停止列表中。
ALTER FULLTEXT INDEX ON Player SET STOPLIST = OFF -- works now发布于 2015-08-17 19:05:24
Contains可以用来搜索前缀,而不是后缀,它不会像" like“字符串运算符那样工作。请参考documentation
编辑
在搜索发现此不推荐的黑客后,您可以使用它来允许sufix搜索
在表中添加一列,该列存储字符串的反转,如下所示
SET NewColumnName = REVERSE(ColumnName)
CREATE PROCEDURE sps_searchSuffix(@searchString varchar(8000)) AS
SET @searchString = REVERSE(@searchString)
DECLARE @Q nVARCHAR(MAX)
SET @Q = 'SELECT * FROM TableName WHERE CONTAINS (ColumnName,''"'+@searchString+'*"'''+')'
EXEC SP_EXECUTESQL @Q如果你想搜索"garding“,并且你有一个类似于"regarding”的数据,你可以这样叫它。
DECLARE @ST VARCHAR(500)
SET @ST = 'garding'
PRINT @ST
EXEC sps_searchSuffix @ST找到here
https://stackoverflow.com/questions/32042293
复制相似问题