4

VARCHAR2 とその他のフィールドを返すクエリを実行しています。この VARCHAR2 で結果を並べ替えていますが、Oracle のドキュメントで発見したように、言語ソートに関連するいくつかの問題があります。例えば:

SELECT id, my_varchar2 from my_table ORDER BY MY_VARCHAR2;

戻ります:

ID     MY_VARCHAR2
------ -----------
 3648  A
 3649  B
 6504  C
 7317  D
 3647  0

ASCII 値を比較するため、このシーケンスの最初の要素として文字列「0」を返す必要があります。文字列には複数の文字を含めることができるため、最初の文字以外の文字を無視するため、ascii 関数を使用できません。

これを行う最善の方法は何ですか?

4

1 に答える 1

6

BINARYその場合、文字の値で並べ替えることができるはずです。

SELECT id, my_varchar2 
FROM my_table 
ORDER BY NLSSORT(MY_VARCHAR2, 'NLS_SORT = BINARY')

ここでSQLFiddle 。

于 2012-09-24T17:42:29.843 に答える