gpt4 book ai didi

mysql - MySQL中的重音不敏感搜索查询

转载 作者:IT老高 更新时间:2023-10-28 23:51:05 25 4
gpt4 key购买 nike

有什么方法可以让搜索查询的口音不敏感?

列和表的排序规则是 utf8_polish_ci,我不想更改它们。

例句:托伦

select * from pages where title like '%torun%'

它没有找到“toruń”。我该怎么做?

最佳答案

您可以在运行时在 sql 查询中更改排序规则,

...where title like '%torun%' collate utf8_unicode_ci 

但请注意,在运行时即时更改排序规则会放弃 mysql 使用索引的可能性,因此大型表的性能可能很糟糕。

或者,您可以将该列复制到另一列,例如 searchable_title,但更改其排序规则。做这种类型的事情实际上很常见,您可以在其中复制数据,但采用一些略有不同的形式,这些形式针对某些特定的工作负载/目的进行了优化。您可以使用触发器作为保持重复列同步的好方法。如果索引,此方法有可能表现良好。

注意 - 确保您的数据库确实具有这些字符而不是 html 实体。此外,连接的字符集也很重要。上面假设它设置为 utf8,例如,通过 set namesset names utf8

如果没有,您需要一个 introducer对于字面值

...where title like _utf8'%torun%' collate utf8_unicode_ci 

当然,单引号中的值实际上必须是 utf8 编码,即使 sql 查询的其余部分不是。

关于mysql - MySQL中的重音不敏感搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com