【发布时间】:2018-09-28 12:08:45
【问题描述】:
我有一个包含以下行的示例 MYSQL 表:
name
------
Oppo A71 (2018)
Plum Flipper (2018)
Lenovo K5 Note (2018)
Huawei Y9 (2018)
Huawei Y7 (2018)
我想让用户搜索数据库。问题在于,在大多数情况下,用户会搜索关键字 2018,而不是 samsung a8 2018 等括号,而不是 samsung a8 (2018)。
所以对于下面的查询:
SELECT * FROM phones WHERE name LIKE '% 2018 %'
它不会返回任何内容,因为 2018 存储在 db 中并带有括号。
如果我将查询切换到:
SELECT * FROM phones WHERE name LIKE '%2018%'
它将正确显示结果,但如果它是字符串的一部分,或者会返回数千个不相关的行,我不希望查询与文本匹配。这些词必须是实际发现的词,而不是词的一部分。所以我必须全年都有空位。
有没有办法在运行 LIKE 时忽略括号,以便 2018 例如匹配以 (2018) 作为单词的行?
【问题讨论】:
-
需要考虑的其他事项:如果“2018”是单独的信息(例如产品的建造年份),则应将其存储为单独的属性。这不仅会消除您的查询问题,而且会使其符合基本的关系原则。