我的列中有以下值,我需要根据它们的名称对它们进行排序。列的数据类型是 VARCHAR2 (25 BYTE)。我的数据是
Oracle 10g, Oracle 9i, Oracle 11g
当我使用 ORDER BY Name 时,我得到了订单的结果
Oracle 10g
Oracle 11g
Oracle 9i
我该怎么做才能按顺序获取数据,如下所示
Oracle 9i
Oracle 10g
Oracle 11g
我的列中有以下值,我需要根据它们的名称对它们进行排序。列的数据类型是 VARCHAR2 (25 BYTE)。我的数据是
Oracle 10g, Oracle 9i, Oracle 11g
当我使用 ORDER BY Name 时,我得到了订单的结果
Oracle 10g
Oracle 11g
Oracle 9i
我该怎么做才能按顺序获取数据,如下所示
Oracle 9i
Oracle 10g
Oracle 11g
/* order based on a number in string */
SELECT str
FROM
(
SELECT 'Oracle 10g' str FROM DUAL UNION ALL
SELECT 'Oracle 11g' FROM DUAL UNION ALL
SELECT 'Oracle 9i' FROM DUAL
)
ORDER BY
TO_NUMBER(REGEXP_REPLACE(str, '\D'))
/* result */
Oracle 9i
Oracle 10g
Oracle 11g
编辑:按预期工作
这里我们有字母数字字符。请使用substring
功能。
从 table_name order by SUBSTRING (name,0,8) 中选择 column_name
根据您的要求使用升序或降序。
注意:8 是长度,因为 Oracle 和 Space 是它们之间的共同字符。
你可以试试这个:
SELECT * FROM TABLE_NAME ORDER BY NAME DESC