我遇到了一个非常令人沮丧的特性,由于某些原因,涉及select LIKE %D%
的查询将与Đ
不匹配。
然而,所有类似于此的其他字符都匹配。%n%
匹配ñ
,%o%
匹配ồ
,但是如果我在搜索%Dong Nai%
,则不会得到Đồng Nai
。
尽管%Thua Thien-Hue%
将与Thừa Thiên-Huế
相匹配
这是一个MySQL特性还是硬编码到Unicode中的东西,还是有办法解决这个问题?这使得使用我的网站的人无法找到关于某些越南省份的事件,除非他们能够访问Đ
密钥,而在美国几乎没有人这样做。
编辑:
对于一个讲越南语的人来说,a,e,i,o或u匹配所有越南元音这一事实是非常出乎意料的行为。
这是越南语的所有元音。
a、á、̉,ạ、a、ằ,ắ,ẵ,ẳ,ặ,ă,ầ,ấ,ẫ,ẩ,ậ、α、èe、é、ẽ,ẻ,ẹ、e、ề,ế,ễ,ể,ệ、存在、μ、í、ĩ,ỉ,ị、i、“、”ỡ,ở,ợ,ơ,ư,ú,ũ,ủ,ụ,u,ừ,ứ,ữ,ử,ự,ư
我的问题是:“什么是不同的字母?”
似乎其他讲越南语的人向MySQL:报告了这个错误
此行为在5.6+中似乎不存在。如果MySQL的更新有帮助,我会告诉您的。
发布于 2011-06-14 19:43:51
这和校对有关。查看http://www.collation-charts.org/mysql60/,您将看到D和字符Đ在进行比较时是不一样的。正如nico在注释中所建议的,在进行比较时,最简单(虽然不是最快)的方法是用D代替Đ。但是,这可能不实用,取决于性能标准,在这种情况下,您可能希望保留一个单独的列或内容表,该列或表在将数据插入数据库时已进行了调整以替换某些字符。
发布于 2011-07-22 02:22:16
这些越南元音和它们的变体基本上是相等的(具有相同的基本字符),但又是次要的(方言)不同。使用适当的排序规则可以使它们相等。
但是,对于'D‘和'Đ’来说,这是不同的,因为它们不是相关字符,也不等于任何排序规则。因此,需要将这两个字母进行比较。
发布于 2020-02-26 06:38:20
与MySQL 8.0中的utf8mb4_0900_ai_ci
排序规则一样,'%D%‘现在可以与'Đ’匹配。
https://stackoverflow.com/questions/6349011
复制相似问题