通过不提供正确的输出作为ascii值的顺序负(-)大于正(+)

pod7payv  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(247)

为什么我的表没有基于ascii值给出正确的输出。我写过这样的问题 select * from patient1 order by BLOOD_GROUP DESC; 因此,据我所知,o-ve,o+ve,…将作为输出,但我的输出将作为o+ve,o-ve,。。。

k97glaaz

k97glaaz1#

如果+/-始终位于第二个位置,则可以用按顺序排列的字符替换它们:

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

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

cclgggtu

cclgggtu2#

订购工作正常。的ascii码 + 是43,ascii码是 - 45岁,所以 + 确实应该早到 - 按字典顺序排列。
作为另一种解决方案,您可以对 blood_group 包含 - 角色,然后在 blood_group 所以你得到你的 A 在你的 B 学生:

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

相关问题