首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重音对问题数据库的不敏感搜索

重音对问题数据库的不敏感搜索
EN

Stack Overflow用户
提问于 2012-03-14 09:50:08
回答 2查看 316关注 0票数 2

我有一个包含不同语言数据的数据库。有些语言使用重音(比如áéíóú),我需要在这个数据中搜索,因为口音不存在(搜索'campeon‘应该返回'campeón’作为一个值结果)。

问题是我的数据库(utf8_unicode_ci)中的表没有存储utf8字符。如果您通过phpmyadmin看到数据,带有口音的单词如下所示:campe

经过一些研究,我发现(在StackOverflow question中)这个问题与集合名称字符集的不存在有关。事实上,我已经做了一些测试,如果我将名称设置为utf8,一切都按预期进行。

好吧,我有解决办法,有什么问题?问题是数据库正在生产,所以数据库中有数千个字符串。如果我更改客户端将使用的字符集,所有已经存在的字符串都将无效。问题是:有没有办法:

在使用错误字符集(如mine?

  • transform )的数据库中执行重音不敏感的搜索,将表中的数据安全地用于处理数据库中的混合字符集(latin1和utf8)的适当charset?

  • continue,前提是latin1数据不会是accent-insensitive?

如果有人在我提出的解决方案中有经验,或者有新的解决方案,我将非常感谢分享。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-14 09:58:37

问题是数据是使用错误的连接编码插入的,您可以通过

  1. 使用错误的连接编码导出数据,就像您迄今为止使用的那样,然后是
  2. 使用正确的utf8连接编码导入数据。

这将解决编码问题,之后搜索将按预期工作。

票数 1
EN

Stack Overflow用户

发布于 2012-03-14 09:58:30

如果在会话开始时创建表的副本,更改副本的字符集,执行所有查询,然后在会话结束时删除表,怎么办?我不知道这会有多实际-取决于您需要多久执行这些查询,以及表的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9699473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档