当我在搜索页面中搜索雪铁龙时,我得到了结果,但如果我搜索blackn 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')";
答案 0 :(得分:0)
如果您已经知道了(要替换的)字符,您可以使用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
函数,如果需要替换多个字符。
答案 1 :(得分:0)
反斜杠是MySQL的转义字符。您可以尝试以下操作...由于单词终止符,全文索引会变得有点奇怪。
$sql = "SELECT * FROM arac
INNER JOIN suv_marka ON arac.marka = suv_marka.id
WHERE match(suv_marka.marka) against ('black\'n roll' IN BOOLEAN MODE);"
如果这不起作用,那么尝试单独查找单词。字长也是一个因素,小字(默认情况下少于4个字符)未编入索引。
$sql = "SELECT * FROM arac
INNER JOIN suv_marka ON arac.marka = suv_marka.id
WHERE match(suv_marka.marka) against ('black' + 'roll' IN BOOLEAN MODE);"