我需要对包含数字,字母数字和特殊字符数据的列进行排序。
我的数据:
567865
798172
hjy733
y@y899
$#798e
jk90&32
进入输出:
567865
798172
$#798e
y@y899
jk90&32
答案 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