MySQL查询BOOLEAN MODE大小写敏感性

5

我的搜索区分大小写,但我希望它不区分大小写。在MySQL中,我的数据库和表设置为 utf8_general_ci 。搜索仍然是区分大小写的。我做了一些研究,似乎查询中的 BOOLEAN MODE 是造成这种情况的原因。有没有办法使其不区分大小写?这样无论我以任何大小写方式输入单词,它都会在搜索结果中显示出来。

SELECT 
        s_cost_sheet.partnumber,
        s_cost_sheet.description,
        s_cost_sheet.price,
        s_cost_sheet.notes

    FROM s_cost_sheet
    WHERE MATCH ( partnumber, description, price, notes ) 
    AGAINST('%".$search."%' IN BOOLEAN MODE) ORDER BY partnumber, description, price, notes ASC";

我已经测试过在phpMyAdmin中的搜索功能,无论我使用什么样的大小写输入单词"plate",例如Plate、PLATE、plaTE,都能够正常运行。因此,问题一定出现在其他方面。


列呢?它们也是utf8_general_ci吗? - Karolis
是的,它们也被设置为utf8_general_ci。 - asar
我认为没有双引号这个应该可以很好地工作。你为什么要使用百分号? - Karolis
使用'.search.'仍然区分大小写。我可以获取结果,但只有在使用精确匹配时才能获取到。例如,我正在搜索"plate",但结果不会显示,因为它输入为"Plate"。所以我必须搜索"Plate"才能找到它。我希望它可以找到任何单词,无论是什么(PLATE、plate、Plate、PLate等)。按照我的设置,它应该可以工作,所以我不明白为什么它不起作用。 - asar
2个回答

1
如果其中一列的类型为int或numeric,则搜索将变成区分大小写。此外,在搜索字符串中不需要使用%。

是的,这是正确的。我将它们全部更改为VARCHAR,而不是使用2个十进制列。谢谢! - asar

0

尝试将您的表和列更改为utf8_general_ci,您就不必使用%通配符来进行FULL TEXT Search

建议 如果您需要更快的结果,请避免在ORDER BY子句中使用大量列。


我已经将表格和列设置为utf8_general_ci,但它仍然以这种方式运作。 - asar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接