Mic*_*uel -2 mysql sql sql-like
我有一个示例 MYSQL 表,其中包含以下行:
name
------
Oppo A71 (2018)
Plum Flipper (2018)
Lenovo K5 Note (2018)
Huawei Y9 (2018)
Huawei Y7 (2018)
Run Code Online (Sandbox Code Playgroud)
我想让用户搜索数据库。问题是,在大多数情况下,用户会搜索2018没有括号的关键字samsung a8 2018,例如,而不是samsung a8 (2018)。
所以对于以下查询:
SELECT * FROM phones WHERE name LIKE '% 2018 %'
Run Code Online (Sandbox Code Playgroud)
它不会返回任何内容,因为2018它存储在数据库中,周围有括号。
如果我将查询切换为:
SELECT * FROM phones WHERE name LIKE '%2018%'
Run Code Online (Sandbox Code Playgroud)
它将正确显示结果,但我不希望查询匹配文本,如果它是字符串的一部分,或者会返回数千个不相关的行。这些词必须是实际找到的词,而不是词的一部分。所以我必须在一年左右有空间。
运行时有没有办法LIKE忽略括号,2018以便例如将行与(2018)单词匹配?
一种方法是正则表达式。但是使用like,您可以在匹配之前替换括号:
SELECT *
FROM phones
WHERE REPLACE(REPLACE(name, '(', ' '), ')', ' ') LIKE '% 2018 %'
Run Code Online (Sandbox Code Playgroud)