利用 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 来补齐:

```sql
SELECT TO_CHAR(age, '000') FROM user ORDER BY TO_CHAR(age, '000') DESC

这时候排序就很准确了,我们可以使用格式为“000”的字符串来排序,以确保按数字大小来排序。

最后,在排序数字时要记住两件事:

(1)要确保我们是按照字符串来排序,因此要使用 TO_CHAR 函数把数字转换为字符串;

(2)如果我们是用格式为“000”的字符串来排序,则需要加上 DESC 字段来确保按大小顺序排序;

以上就是 ORACLE 中利用 ORDER BY 排序数字的方法,希望大家在排序数字时记住这一点,以免误判。


数据运维技术 » 利用 Oracle 中的 ORDER BY 排序数字(oracle按数字排序)