我试图匹配关键字,但不完全匹配,一些相关的东西,我使用sql LIKE和wilcard %%类似'%mens,shoe%'
,将与men,mens匹配每个数据鞋或什至两者,但问题是,如果用户使用像这样的撇号 '%men\'s, Shoes%'
,这只会匹配包含男鞋或带有撇号的男鞋的记录,并且不会匹配男士或男士有没有办法让我可以使用撇号输入匹配记录而无需撇号感谢您的帮助
我正在编辑我的问题并添加 SQL 语句,如下所示
SELECT SQL_CALC_FOUND_ROWS p.product_id,p.title,p.price,p.unit_sold,p.slug,p.discount,p.free_shipping,free_return,
p.profile_img,p.store_name,p.item_number,
(
(-- Title score
if (title LIKE '%men\'s, shoe%',6,0) + if (title LIKE '%men\'s%',5,0) + if (title LIKE '%shoe%',5,0)
)+
(-- description
if (description LIKE '%men\'s, shoe%',5,0) + if (description LIKE '%men\'s%',4,0) + if (description LIKE '%shoe%',4,0)
)+
(-- item number
if (item_number = 'men\'s, shoe',4,0) + if (item_number = 'men\'s',3,0) + if (item_number = 'shoe',3,0)
)+
(-- category id
if (category_id = 'men\'s, shoe',4,0) + if (category_id = 'men\'s',3,0) + if (category_id = 'shoe',3,0)
)
) as relevance
FROM products p
WHERE p.is_active = '1'
HAVING relevance > 0
ORDER BY relevance DESC LIMIT 2,2
最佳答案
您的情况应如下所示:
someColumn LIKE '%men''s%' or someColumn LIKE '%men\''s%' or someColumn LIKE '%shoe%'
其中 someColumn
是您感兴趣的列名称。它将匹配任何出现的情况,例如:men's
、men\'s
等。
关于mysql - 匹配mysql数据库中的关键词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51336963/