首页 > 解决方案 > 通过不给出正确的输出作为负 (-) 大于正 (+) 的 ascii 值来排序

问题描述

为什么我的表没有根据 ASCII 值给出正确的输出。我已经写 select * from patient1 order by BLOOD_GROUP DESC;了这样的查询,据我所知,O-ve,O+ve,...将作为输出出现,但我的输出作为 O+ve,O-ve,... 在此处输入图像描述

标签: mysqlsqlselectsql-order-bymysql-workbench

解决方案


排序工作正常。的 ASCII 码+是 43,而 ASCII 码-是 45,所以在字典顺序中+确实应该排在前面。-

作为替代解决方案,您可以对是否blood_group包含-字符的布尔值 true/false 进行排序,然后blood_group对它本身进行排序,以便在As 之前获得Bs:

SELECT   *
FROM     patient1
ORDER BY blood_group LIKE '%-%' DESC, blood_group

推荐阅读