如何忽略 SQL LIKE 中的符号

use*_*787 6 mysql sql

我有一个带有 SQL 查询的搜索模块,如下所示:

SELECT FROM trilers WHERE title '%something%'
Run Code Online (Sandbox Code Playgroud)

当我搜索诸如“蜘蛛侠”之类的关键字时,它返回找不到,但是当我搜索“蜘蛛侠”时,它返回我的内容(MySQL 中的原始行是“蜘蛛侠”)。

如何忽略所有符号,如-, #, !:并同时返回带有“蜘蛛侠”和“蜘蛛侠”关键字的内容?

Sar*_*hal 8

您可以做的是在搜索发生之前替换您不关心的字符。

第一次迭代看起来像这样:

SELECT * FROM  trilers WHERE REPLACE(title, '-', '') LIKE '%spiderman%'
Run Code Online (Sandbox Code Playgroud)

这将忽略任何“-”。

接下来,您将使用另一个 REPLACE 来 rap 以包含“#”,如下所示:

SELECT * FROM  trilers WHERE REPLACE(REPLACE(title, '-', ''), '#', '') LIKE '%spiderman%'
Run Code Online (Sandbox Code Playgroud)

对于所有 3 ('!','-','#'),您只需将 Replace 增加为另一个 Replace,如下所示:

SELECT * FROM  trilers WHERE REPLACE(REPLACE(REPLACE(title, '-', ''), '#', ''),'!','') LIKE '%spiderman%'
Run Code Online (Sandbox Code Playgroud)