我遇到了一个非常令人沮丧的功能,出于某种原因,涉及选择 LIKE %D%
的查询将不匹配 Đ
。
但是,与此类似的所有其他字符都匹配。 %n%
匹配 ñ
,%o%
匹配 ồ
,但是如果我正在搜索 %同奈%
我不会得到同奈
。
尽管 %Thua Thien-Hue%
将匹配 Thừa Thiên-Huế
这是 MySQL 的特性还是硬编码到 Unicode 中的东西,或者有解决办法吗?它使使用我的网站的人无法找到有关某些越南省份的事件,除非他们可以访问 Đ
键,而在美国几乎没有人这样做。
编辑:
事实上,a、e、i、o 或 u 匹配所有越南语元音,这对于越南语使用者来说是非常意外的行为。
供引用;这是越南语中的所有元音。
à, á, ã̉, ạ, a, ằ, ắ, ẵ, ẳ, ặ, ă, ầ, ấ, ẫ, ẩ, ậ, â, è, é, ẽ, ẻ, ẹ, e, ề , ế, ễ, ể, ệ, ê, ì, í, ĩ, ỉ, ị, i, ò, ó, õ, ỏ ,ọ, o, ồ, ố ,ỗ, ổ, ộ ,ô, ờ, ớ ,ỡ, ở, ợ, ơ, ù, ú, ũ, ủ, ụ, u, ừ, ứ, ữ, ử, ự, ư
那么我的问题是,“什么构成足够不同的字母?”。
似乎其他讲越南语的人已将此报告为 MySQL 的错误:
此行为在 5.6+ 中似乎不存在。如果更新 MySQL 有帮助,我会通知您。
最佳答案
这是与排序规则有关的。查看http://www.collation-charts.org/mysql60/比较时你会发现 D 和字符 Đ 是不一样的。正如 nico 在评论中所建议的那样,最简单(虽然不是最快)的方法是在进行比较时用 D 替换 Đ 。但是,根据您的性能标准,这可能不切实际,在这种情况下,您可能希望保留一个单独的列或内容表,在将数据插入数据库时,这些列或内容表经过调整以替换某些字符。
关于mysql - 如何让 MySQL 匹配 `%D%` => `Đ`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349011/