我的列中有以下值,我需要根据它们的名称对它们进行排序。列的数据类型为VARCHAR2(25 BYTE)。我的数据是
Oracle 10g, Oracle 9i, Oracle 11g
当我使用ORDER BY Name时,我得到的结果是
Oracle 10g
Oracle 11g
Oracle 9i
如何按顺序获取数据
Oracle 9i
Oracle 10g
Oracle 11g
答案 0 :(得分:1)
/* 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
答案 1 :(得分:0)
编辑:按预期工作
这里我们有字母数字字符。请使用substring
功能。
通过 SUBSTRING (名称,0,8)从table_name中选择column_name
根据您的要求使用升序或降序。
注意:8是长度,因为Oracle和Space是它们之间的常见字符。
答案 2 :(得分:0)
你可以试试这个:
SELECT * FROM TABLE_NAME ORDER BY NAME DESC