如何在oracle中对列的字母数字和特殊字符值进行排序?

时间:2017-05-22 16:31:58

标签: sql oracle oracle11g

我需要对包含数字,字母数字和特殊字符数据的列进行排序。

我的数据:

567865
798172
hjy733
y@y899
$#798e
jk90&32

进入输出:

567865
798172
$#798e
y@y899
jk90&32

1 个答案:

答案 0 :(得分:1)

这可能是一种有趣的方式,如果这是你想要做的。 : - )

SELECT S.COL1,
RESULT.REGEXP 

FROM YOURDATA S

LEFT JOIN (  SELECT COL1, 
                CASE 
                WHEN regexp_like (substr (COL1, 1, 1), '([[:digit:]]$)')  THEN 'A' -- numeric
                WHEN regexp_like (substr (COL1, 1, 1), '[^a-zA-Z0-9]')    THEN 'B' -- symbol
                WHEN regexp_like (substr (COL1, 1, 1), '([[:alpha:]]$)')  THEN 'C' -- alpha           
                ELSE 'X'
                END AS REGEXP
            FROM YOURDATA
            )RESULT ON S.COL1 = RESULT.COL1
ORDER BY RESULT.REGEXP, S.COL1