我正在使用sql实现搜索,这是查询
Select CM.ID, ProductName,ImageURL,SKU,AA.Name as
MemberName,Price,Discount,DM.Name as CategoryName from tblMasterProduct CM
INNER JOIN tblProducts OM ON CM.ID=OM.MasterProductID
INNER JOIN tblMasterCategory DM ON CM.SubCategoryID=DM.ID
INNER JOIN tblOnlineRetailMember AA ON OM.MemberID=AA.ID
WHERE 1=1 AND CM.ProductName LIKE '% watches %' AND CM.SubCategoryID= 112
AND (OM.Price - OM.Discount) BETWEEN 0 And 200000
问题是查询返回包含单词watch的结果,而我也想获取所有包含单词Watch的条目。
编辑:很抱歉,信息不完整,查询是在存储过程中编写的,并且字符串是由用户输入的,无法从用户那里获得“监视”。
最佳答案
尝试在MSSQL中使用SOUNDEX或DIFFERENCE函数。如果ProductName
是一个多词,则可以使用PARSENAME拆分为多个词,然后使用DIFFERENCE在字符串中找到一个相似的词:
select * from t WHERE DIFFERENCE(ProductName,'watches')>=3
SQLfiddle demo
关于sql - SQL Like查询以获得与参数最接近的匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32732405/