-2
数値、英数字、特殊文字のデータを持つ列をソートする必要があります。oracleのcolumnの英数字と特殊文字の値をソートする方法は?
マイデータ:出力に
567865
798172
hjy733
[email protected]
$#798e
jk90&32
:
567865
798172
$#798e
[email protected]
jk90&32
数値、英数字、特殊文字のデータを持つ列をソートする必要があります。oracleのcolumnの英数字と特殊文字の値をソートする方法は?
マイデータ:出力に
567865
798172
hjy733
[email protected]
$#798e
jk90&32
:
567865
798172
$#798e
[email protected]
jk90&32
これはあなたがやろうとしているものである場合、これは、それを行うための楽しい方法かもしれません。 :-)
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
(1)シンプルな「注文」はなぜあなたにとってうまくいかないのですか? (2)ソートされた出力の値がソートされていない値よりも小さいのはなぜですか? – 9000
それではどのようなソート順ですか?英数字ではなく、ASCIIでないこと。要件を説明する必要がある場合は、 – APC
ちょうどそれのユーモアのためにちょうど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