Sql server SQL Server在长连续词之间的全文搜索

Sql server SQL Server在长连续词之间的全文搜索,sql-server,full-text-search,Sql Server,Full Text Search,我试图在p1005字符串中搜索1005,但没有找到任何结果 我使用了查询: SELECT * FROM Products WHERE CONTAINS (Name, '"*1005*"') SELECT * FROM Products WHERE CONTAINS (Name, '1005') SELECT * FROM Products WHERE FREETEXT (Name, '"1005"') 有没有一种方法可以在单词之间搜索单词?我不一定是一个非常熟练的SQL DB

我试图在p1005字符串中搜索1005,但没有找到任何结果

我使用了查询:

SELECT * 
FROM Products 
WHERE CONTAINS (Name, '"*1005*"')

SELECT * 
FROM Products 
WHERE CONTAINS (Name, '1005') 

SELECT * 
FROM Products 
WHERE FREETEXT (Name, '"1005"')

有没有一种方法可以在单词之间搜索单词?

我不一定是一个非常熟练的SQL DBA,但似乎只有当您想搜索单词内部时,才能使用CONTAINS执行前缀搜索。例如,以下查询将起作用:

USE MyDb;  
GO  
SELECT Name  
FROM myDb.Places  
WHERE CONTAINS(Name, ' "Chain*" ');  
GO 
…但是你需要的那个不会起作用,因为它是一个后缀搜索

SELECT * FROM Products WHERE CONTAINS(Name,' "*1005" ')

我会尝试重构它以使用LIKE操作符。如果有人有其他想法,我也很乐意找到答案

我同时更新了它。请仔细看。它应该是(名字,“*1005”),所以首先是“然后是”然后是“然后是搜索词”,然后是“我只是在我的一个数据库中再次尝试了它,我提出的模型对我很有效。我能想到的是,可能您的列类型是数字类型,或者您的Contains和()之间不应该有空格。从这里我可以看到,在包含之后有一个空格。我还想知道一个对您有用的答案。作为列表提示,您也可以尝试使用此处描述的LIKE运算符:好的,我稍微挖掘了一下,发现您只能使用contains执行前缀搜索,这意味着搜索LIKE contains(““p100*””),但不能使用contains(“*p100”)。在这种情况下,您肯定应该使用LIKE操作符。我会更新我的答案是的,我也找到了。谢谢,但是LIKE是一个非常“沉重”的操作。另外一个全文搜索,比如Elasticsearch,也不能这样做。