2017-05-22 1 views
-2

数値、英数字、特殊文字のデータを持つ列をソートする必要があります。oracleのcolumnの英数字と特殊文字の値をソートする方法は?

マイデータ:出力に

567865 
798172 
hjy733 
[email protected] 
$#798e 
jk90&32 

567865 
798172 
$#798e 
[email protected] 
jk90&32 
+5

(1)シンプルな「注文」はなぜあなたにとってうまくいかないのですか? (2)ソートされた出力の値がソートされていない値よりも小さいのはなぜですか? – 9000

+3

それではどのようなソート順ですか?英数字ではなく、ASCIIでないこと。要件を説明する必要がある場合は、 – APC

+0

ちょうどそれのユーモアのためにちょうどcol''d 567865'WHEN col = '798172' then 2 col = '$#798e' then 3 col = 'y @ y899'そして4 when col = 'jk90&32' then 5 else 9999 end'この例のデータに基づいてどのパターンに従うのか分かりません。 – xQbert

答えて

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 
関連する問題