mysql - 匹配mysql数据库中的关键词

标签 mysql sql

我试图匹配关键字,但不完全匹配,一些相关的东西,我使用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'smen\'s 等。

关于mysql - 匹配mysql数据库中的关键词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51336963/

相关文章:

mysql - 使用 mysql 查找日期间隔

mysql - sql子查询中如何使用Union

sql - MySQL 不支持子查询中的 limit 子句,我该怎么做?

mysql - SQL 多对多关系与 Join 和Where 子句

mysql - 如何使 Sequelize 使用单数表名

mysql - 从MySQL中的字符串数组中删除重复的单词

mysql - 使用 Homebrew 软件安装时更改 mysql 数据库位置

MYSQL:如何在插入期间使 NULL 或空数据默认为 0

php - 我可以让这三个 SQL 查询只适合一个吗?

mysql - 根据其条目列值迭代行