mysql - 如何让 MySQL 匹配 `%D%` => `Đ`

标签 mysql unicode collation

我遇到了一个非常令人沮丧的功能,出于某种原因,涉及选择 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://bugs.mysql.com/bug.php?id=61258

最佳答案

这是与排序规则有关的。查看http://www.collation-charts.org/mysql60/比较时你会发现 D 和字符 Đ 是不一样的。正如 nico 在评论中所建议的那样,最简单(虽然不是最快)的方法是在进行比较时用 D 替换 Đ 。但是,根据您的性能标准,这可能不切实际,在这种情况下,您可能希望保留一个单独的列或内容表,在将数据插入数据库时​​,这些列或内容表经过调整以替换某些字符。

关于mysql - 如何让 MySQL 匹配 `%D%` => `Đ`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349011/

相关文章:

python - 如何使用 mysql.connector 从 MySQL 返回 str?

mysql - 构建 Docker mysql 数据库后抛出 OperationalError

c++ - C++获取unicode字符的CodePoint

php - MySQL SELECT MIN 对于所有时间,但仅在 BETWEEN 日期时返回

unicode - Win32 API 函数需要什么编码?

c - 为什么我将环境设置为 UTF8 却没有打印出这些 Unicode 字符?

mysql - 函数在不同的服务器上变得区分大小写

MySQL SELECT 编码问题(可能是西里尔文)

c# - 单击时获取 GridView 单元格的字符串值

php - mysql conditional "not_in"based on another value to parse array into query