mysql和oracle查询排序

一、简单排序(number)

Mysql:

ASC 升序 空——小——大

Desc 降序 大——小——空

Oracle:

ASC 升序 小——大——空

Desc 降序 空——大——小

用法:

SELECT a.name,a.age_ID FROM A a ORDER BY a.ageDESC

SELECT a.name,a.age as aa_ID FROM A a ORDER BY aaDESC

SELECT a.name,a.age_ID FROM A a ORDER BY 2 DESC

 

可以使用列名进行排序,也可以用列名所在的位置进行排序

二、多个字段排序(number)

说明:当两个字段同时进行排序的时候,当第一个字段相同时,才根据第二个字段进行排序。

用法:SELECT ju.NAME,ju.ROLE_ID,ju.EXPERIENCE FROM jspt_user ju ORDER BYju.ROLE_ID ASC, ju.EXPERIENCE ASC

三、字符串排序(varchar)

Mysql:

ASC 升序空——数字(1-9)——字母(a-z不区分大小写)

Desc 降序 字母(z-a不区分大小写)——数字(9-1)——空

Oracle:

ASC 升序 数字(1-9)——字母(大写)——字母(小写)——空

Desc 降序 空——字母(小写z-a)——字母(大写)——数字(9-1)

 

说明:aaa 和aaa123 在升序时,aaa在aaa123之前

 

四、子串排序

说明:按照身份证的后5位进行排序

例:SELECT ju.ACCOUNT,ju.ID_CARD_NUM,SUBSTR(ID_CARD_NUM,-5) AS num

FROM jspt_user ju ORDER BY num DESC

 

五、按照字符串和数字混合中的字符串进行排序(oracle)

说明:此时要把某一列的数字替换成空格,使用字符串函数translate(替换列,需替换的地方,替换成)

例:SELECT ju.ACCOUNT,ju.NAME,translate(ACCOUNT,'-0123456789','-')as acc FROM jspt_user ju ORDER BY acc DESC

 

六、空值在前(oracle)

说明:空值在前,其他升序排序,mysql 升序,空值本来就放在前面

例:SELECT ju.ACCOUNT FROM jspt_user ju ORDER BY ACCOUNT NULLSfirst

 

七、优先排序

说明:搭配case when 进行排序

例:SELECT * FROM jspt_user ju  ORDER BY CASE WHEN  ju.CREATE_SOURCE = '1' THEN 1 ELSE 0  end DESC

字段为create_source=1时,优先排序

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_32932571/article/details/51546276
个人分类: mysql 初学oracle
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

mysql和oracle查询排序

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭