在mysql中定义相似的字符

索海尔

在mysql中,以下查询将返回1

select "Khur Ramābād"="Khur Ramabad"

因此在mysql中a和ā之间没有区别。但a = 97的ascii码和ā= 196的ascii码。

是否可以为其他语言定义相同的东西?例如,在波斯语中的“ی”和“ي”是具有不同字符代码的相同字符,某些键盘布局使用“ی”,而另一些键盘使用“ي”。

我知道我可以在应用程序端对其进行控制,并在其中将所有ي替换为ی,但这不适用于所有字符。例如“آ”和ا相同,但不能互相替换。

我的问题不是字符集。我已经在使用utf8。正如我在拉丁文中所说,如果您搜索“ Khur Ra​​mabad”并且您的字段包含“ KhurRamābād”,则mysql将返回结果,但在波斯语中,如果您具有“نارنجی”并搜索“نارنجي”,则不会返回任何内容,因为“ ی”和“ي”必须具有不同的字符代码。

我的问题不是字符集。我已经在使用utf8。正如我在拉丁文中所说,如果您搜索“ Khur Ra​​mabad”并且您的字段包含“ KhurRamābād”,则mysql将返回结果,但在波斯语中,如果您具有“نارنجی”并搜索“نارنجي”,则不会返回任何内容,因为“ ی”和“ي”具有两个不同的字符代码。

琼斯

您问的问题是关于排序规则。MySQL认为您的两个罗马字符名称相等,因为它使用COLLATE utf8_general_ci(或者可能是utf8_swedish_ci; MySQL的根源在瑞典)作为默认排序规则。该排序规则认为带重音符和不带重音符是相等的。

不幸的是,utf8_persian_ci排序规则似乎没有考虑您显示的两个替代字符相等。

请参阅此处的一些SQL,它可以比较文本字符串的各种版本,并显示它们是否相等。http://sqlfiddle.com/#!8/eeff3/1/0

我对波斯语一无所知,所以我不能说这是否意味着排序规则有缺陷。但这可能是。如果是这样,您应该向https://bugs.mysql.com/提交缺陷报告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在mysql中定义相似的字符

来自分类Dev

在MySQL中合并相似的数据

来自分类Dev

在数组中查找相似的字符串

来自分类Dev

在javascript字符串中搜索相似的值

来自分类Dev

将相似的字符串附加到文件中

来自分类Dev

如何定义多个相似的指令?

来自分类Dev

在字符串数组中寻找相似的字符串

来自分类Dev

从字符串中替换/删除相似的子字符串

来自分类Dev

压缩大量相似的字符串

来自分类Dev

相似的字符串,不同的结果

来自分类Dev

相似的字符串,不同的结果

来自分类Dev

如何将非常相似的字符串中的方差输出到数组中?

来自分类Dev

如何在adblock自定义过滤中匹配相似的域

来自分类Dev

合并相似的数组,PHP或MySQL

来自分类Dev

MySQL查询获得相似的赞

来自分类Dev

MySQL和PHP搜索相似的单词

来自分类Dev

RegExp是否可以在字符串中获取相似的文本

来自分类Dev

从数据框中删除相似的字符串重复项

来自分类Dev

检查同一列中是否有相似的字符串

来自分类Dev

在正则表达式字符串中搜索相似的值

来自分类Dev

从Python的列表中删除外观相似的字符串

来自分类Dev

在c中输出文件,同时丢弃相似的字符组

来自分类Dev

如何在Vim中搜索两个相似的字符串之一?

来自分类Dev

查找相似的字符串并在一个数据框中协调它们

来自分类Dev

如何在Excel的列中查找相似的字符串或文本?

来自分类Dev

MySQL根据第二个表中的条目对相似的行进行分组

来自分类Dev

如何从输入中删除相似的边框?

来自分类Dev

在Julia中创建非常相似的类型

来自分类Dev

从表中获取相似的名称