在mysql中使用ORDERBY子句按字母顺序排序小写字母和大写字母字符串
我正在使用mySQL和排序规则在mysql中使用ORDERBY子句按字母顺序排序小写字母和大写字母字符串,mysql,sql-order-by,collation,Mysql,Sql Order By,Collation,我正在使用mySQL和排序规则utf8mb4\u general\u ci 我尝试了以下查询: 通过cname desc从cust1订单中选择cid、cname 结果是: cid cname 3 bbb 1 abc 2 ABC cid cname 1 abc 2 ABC 3 bbb 在上面的排序规则中是否设置了这种排序类型(小写字母按降序排列) 另外,如果我运行以下查询: 按cname从cust1订单中选择cid、cname 结果是: cid cname
utf8mb4\u general\u ci
我尝试了以下查询:
通过cname desc从cust1订单中选择cid、cname
结果是:
cid cname
3 bbb
1 abc
2 ABC
cid cname
1 abc
2 ABC
3 bbb
在上面的排序规则中是否设置了这种排序类型(小写字母按降序排列)
另外,如果我运行以下查询:
按cname从cust1订单中选择cid、cname
结果是:
cid cname
3 bbb
1 abc
2 ABC
cid cname
1 abc
2 ABC
3 bbb
同样,按升序,小字母排在第一位。我不明白。请给我解释一下
如何更改数据库排序规则?在数据库排序规则中:
a比a大
A比b大
b比b大
对于同一个字母,较小的字母比大写字母大 MySQL正在输出它遇到的第一个条目,因为在本例中它认为“ABC”与“ABC”相同 您可以尝试使用ascii()函数,如“order by cname desc,ascii(cname)desc” 我认为您可以使用如下alter table更改字符排序规则:
“alter table cust1 character set latin1 collate latin1\U REQUESTIVE\U ci”或任何您想要的字符集内容。MySQL具有
…\u ci
排序规则。正如“ci”提示一样,它们不区分大小写。也就是说,a
=a
。(\u ci
也会去除重音。)
MySQL有…\u bin
排序规则。这些比较位。因此a
与a
不同
计划A:在该列上使用校对utf8mb4\u bin
方案B:按cname DESC、id DESC下单
和按cname ASC、id ASC下单
。这样,id
将强制第1行和第2行的顺序一致。(不是,它不会强制在a
和a
之间进行排序
方案C:
按cname DESC排序,cname COLLATE utf8mb4_bin DESC
(我还没有验证此语法是否有效。)应该以可预测的方式对“a”和“a”排序。Ascii默认为Ascii_general_ci,不区分大小写,因此将以相同的方式操作。