为什么我的表格没有基于ASCII值给出正确的输出。我已经写了像select * from patient1 order by BLOOD_GROUP DESC;
这样的查询,因此,据我所知,O-ve,O + ve,...将作为输出出现,但我的输出为O + ve,O-ve,...。
答案 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')
这不会影响结果集,只会影响排序。