为什么我的表没有基于ascii值给出正确的输出。我写过这样的问题 select * from patient1 order by BLOOD_GROUP DESC; 因此,据我所知,o-ve,o+ve,…将作为输出,但我的输出将作为o+ve,o-ve,。。。
select * from patient1 order by BLOOD_GROUP DESC;
k97glaaz1#
如果+/-始终位于第二个位置,则可以用按顺序排列的字符替换它们:
select p.* from patient p order by replace(replace(blood_group, '+', '1'), '-', '2')
这不影响结果集,只影响排序。
cclgggtu2#
订购工作正常。的ascii码 + 是43,ascii码是 - 45岁,所以 + 确实应该早到 - 按字典顺序排列。作为另一种解决方案,您可以对 blood_group 包含 - 角色,然后在 blood_group 所以你得到你的 A 在你的 B 学生:
+
-
blood_group
A
B
SELECT * FROM patient1 ORDER BY blood_group LIKE '%-%' DESC, blood_group
2条答案
按热度按时间k97glaaz1#
如果+/-始终位于第二个位置,则可以用按顺序排列的字符替换它们:
这不影响结果集,只影响排序。
cclgggtu2#
订购工作正常。的ascii码
+
是43,ascii码是-
45岁,所以+
确实应该早到-
按字典顺序排列。作为另一种解决方案,您可以对
blood_group
包含-
角色,然后在blood_group
所以你得到你的A
在你的B
学生: