oca*_*nal 21 mysql search diacritics
有没有办法让搜索查询重音不敏感?
列和表的排序规则是utf8_polish_ci,我不想更改它们.
例如:toruń
select * from pages where title like '%torun%'
Run Code Online (Sandbox Code Playgroud)
它找不到"toruń".我怎样才能做到这一点?
goa*_*oat 24
您可以在sql查询中更改运行时的排序规则,
...where title like '%torun%' collate utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
但请注意,在运行时动态更改排序规则会导致mysql使用索引的可能性,因此在大型表上执行可能会很糟糕.
或者,您可以将列复制到另一列,例如searchable_title,但更改其上的排序规则.这种类型的东西实际上很常见,在这种情况下,你可以复制数据,但是它有一些稍微不同的形式,它们针对某些特定的工作负载/目的进行了优化.您可以使用触发器作为保持重复列同步的好方法.如果编入索引,此方法有可能表现良好.
注 - 确保您的数据库确实具有这些字符而不是html实体.此外,您的连接的字符集很重要.上面假设它设置为utf8,例如,通过集合名称,如set names utf8
如果没有,您需要一个文字值的介绍人
...where title like _utf8'%torun%' collate utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
当然,单引号中的值实际上必须是utf8编码的,即使其余的sql查询不是.
| 归档时间: |
|
| 查看次数: |
21324 次 |
| 最近记录: |