通过不给出正确的输出的ascii值来表示减号(-)大于加号(+)

时间:2018-12-18 10:00:05

标签: mysql sql select sql-order-by mysql-workbench

为什么我的表格没有基于ASCII值给出正确的输出。我已经写了像select * from patient1 order by BLOOD_GROUP DESC;这样的查询,因此,据我所知,O-ve,O + ve,...将作为输出出现,但我的输出为O + ve,O-ve,...。 enter image description here

2 个答案:

答案 0 :(得分:2)

订购正确。 +的ASCII码为43,而-的ASCII码为45,因此按字典顺序,+实际上应排在-之前。

作为一种替代解决方案,您可以对布尔值的真假(例如blood_group是否包含-进行排序,然后对blood_group本身进行排序,以便得到{{您的A前1个} :

B

答案 1 :(得分:1)

如果+/-始终位于第二个位置,则可以将其替换为所需顺序的字符:

select p.*
from patient p
order by replace(replace(blood_group, '+', '1'), '-', '2')

这不会影响结果集,只会影响排序。