Sql server SQL Server在长连续词之间的全文搜索
我试图在p1005字符串中搜索1005,但没有找到任何结果 我使用了查询: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
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,也不能这样做。