我有一个带有 SQL 查询的搜索模块,如下所示:
SELECT FROM trilers WHERE title '%something%'
Run Code Online (Sandbox Code Playgroud)
当我搜索诸如“蜘蛛侠”之类的关键字时,它返回找不到,但是当我搜索“蜘蛛侠”时,它返回我的内容(MySQL 中的原始行是“蜘蛛侠”)。
如何忽略所有符号,如-, #, !,:并同时返回带有“蜘蛛侠”和“蜘蛛侠”关键字的内容?
您可以做的是在搜索发生之前替换您不关心的字符。
第一次迭代看起来像这样:
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)