利用 Oracle 中的 ORDER BY 排序数字(oracle按数字排序)
在查询数据库最常见的操作之一就是对结果的排序,ORACLE 中可以使用 ORDER BY 这一句来实现对某一列的排序。在 ORACLE 中一般用来排序的是字符串,但有时候我们也需要按照数字的大小来排序,那么就要用到 ORDER BY 对数字的排序了。
首先要把需要排序的数字转换成字符串,可以使用 TO_CHAR 函数,像下面这样:
“`sql
SELECT TO_CHAR(age, ’09’) FROM user ORDER BY TO_CHAR(age, ’09’) ASC
上面的 sql 语句表示将表中全部 age 值都转换成字符串形式,后面加一个 ASC 代表升序,一般情况下,数字是 9 的形式来排序,比如 10>9>11 。
当我们想以数字大小来排序时,就必须把它转换成字符串进行排序,这时我们不仅需要使用 TO_CHAR 函数把数字转换成字符串形式,还要把字符串的长度设置成一致的,否则可能会造成误差,例如数字 10 和 100 就会造成误判,把 100 排序在 10 前面。
比如说当我们把转化为 3 位的字符串的话,用 0 来补齐:
```sqlSELECT TO_CHAR(age, '000') FROM user ORDER BY TO_CHAR(age, '000') DESC
这时候排序就很准确了,我们可以使用格式为“000”的字符串来排序,以确保按数字大小来排序。
最后,在排序数字时要记住两件事:
(1)要确保我们是按照字符串来排序,因此要使用 TO_CHAR 函数把数字转换为字符串;
(2)如果我们是用格式为“000”的字符串来排序,则需要加上 DESC 字段来确保按大小顺序排序;
以上就是 ORACLE 中利用 ORDER BY 排序数字的方法,希望大家在排序数字时记住这一点,以免误判。