mysql - 全文搜索 mysql 中的撇号

标签 mysql database full-text-search apostrophe

当我在搜索页面中搜索雪铁龙时,我得到了结果,但是如果我搜索 blackn roll,我不会得到结果,因为它在表中写得像 black'n roll。有些用户可能还想搜索 blackn roll 但没有得到结果。我该如何修复它?还有像 v-hr 这样的行和像“&/() 这样的特殊字符。我希望 mysql 忽略它们。

$sql = "SELECT * FROM arac 
        INNER JOIN suv_marka ON arac.marka = suv_marka.id 
        WHERE match(suv_marka.marka) against('citroen')";

最佳答案

如果您已经知道要替换的字符,则可以使用 MySQL 的 REPLACE 函数将其替换为 % 并执行 LIKE 比较,例如:

create table test(value varchar(100));
insert into test values ('black''n roll');


SELECT value 
FROM test 
WHERE 'blackn roll' LIKE CONCAT('%', REPLACE(value, '''', '%'), '%');

如果需要替换多个字符,您可以将 'blackn roll' 替换为您的输入字符串,并使用嵌套的 REPLACE 函数。

关于mysql - 全文搜索 mysql 中的撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42698786/

相关文章:

database - 如何让站点资源对所有人开放?

database - joomla #__associations 表

sql-server - SQL Server 全文搜索 NOT 运算符

mysql - 为 MySQL FULLTEXT 搜索设置 ft_min_word_len=2 有什么可怕的吗?

mysql - 允许列中有 X 个重复项的 CHECK 约束

php - 获取最后插入行的主键 ID 以运行多个插入操作

mysql - 5 星评级的数据库架构和 Sql

php - 我希望能够根据不同表中的内容在 Post 表中搜索 Post

php - 如何将便士格式化为英镑和便士?

python - 如何在Django中实现全文搜索?