MySQL中使用'order by'排序阿拉伯文字母的问题

8

I have Arabic words in my database:

Example:

أحمد يحيى
احمد اسعد

问题是:
我想按名称排序获取名称。
期望的结果是:
احمد اسعد
أحمد يحيى

但我得到了:
أحمد يحيى 
احمد اسعد

أا之前

我尝试了这个

select name from emp order by name; 

请帮忙。


从 emp 表中按照姓名排序选择名称; - Ayman Hussein
1
你能告诉我们在定义表时使用了哪个字符集和排序规则吗? - O. Jones
3个回答

1

请检查您的数据库排序规则,它们应该设置为utf8_general_ci或utf8_unicode_ci。这样可以让您正确执行order by等操作。

如果运行独立查询,请尝试以下操作:

SET NAMES 'utf8';
SET CHARACTER SET utf8;
select name from emp order by name;

1

尝试在您的表定义中使用波斯语排序。例如:

create table emp 
(
   id int,
   name text,
   ...
)
collate utf32_persian_ci;

选择 emp 表中的名字,按照将名称中的 'ا' 替换为 'أ' 的顺序排序。 - Ayman Hussein

0

我曾经遇到过同样的问题,我通过将类型更改为utf16_bin或任何_bin来解决它。

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL,
  `name` varchar(100) COLLATE utf16_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16 COLLATE=utf16_bin;

更多细节,例如代码示例,将不胜欢迎。 - Fabien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接