Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中使用ORDERBY子句按字母顺序排序小写字母和大写字母字符串_Mysql_Sql Order By_Collation - Fatal编程技术网

在mysql中使用ORDERBY子句按字母顺序排序小写字母和大写字母字符串

在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

我正在使用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     
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,不区分大小写,因此将以相同的方式操作。