0

以下のクエリを使用すると

select model from client_source order by model;

結果のデータはこの順序です

model
______
1234
4g
default
unknown
default1
ipad
iphone simulator
ipod touch
iphone
ipod
test

しかし、私は以下の順序でソートしたい

model
________

1234
4g
default
default1
ipad
iphone
iphone simulator
ipod
ipod touch
test
unknown
4

1 に答える 1

2

あなたのNLS_SORTパラメータはだと思いますBINARY。ソートでは、文字列はバイナリ表現としてソートされます。BINARYつまり、大文字が小文字の前に来るということです。

SQL> alter session set nls_sort=binary;

Session altered

SQL> select model from client_source order by model;

MODEL
--------------------
1234
4g
Default
Unknown
default1
ipad
iphone
iphone simulator
ipod
ipod touch
test

この動作は、さまざまなNLS_SORT値で変更できます。大文字と小文字を区別しないようにするには、接尾辞付きの値をNLS_SORT使用します。_CI

SQL> alter session set nls_sort=latin_ci;

Session altered

SQL> select model from client_source order by model;

MODEL
--------------------
Default
default1
ipad
iphone
iphone simulator
ipod
ipod touch
test
Unknown
1234
4g

で前の数字を移動できますCASE

SQL> SELECT model
  2    FROM client_source
  3   ORDER BY CASE WHEN regexp_like(model, '^[[:digit:]]')
  4                    THEN 0
  5                    ELSE 1
  6            END,
  7            model;

MODEL
--------------------
1234
4g
Default
default1
ipad
iphone
iphone simulator
ipod
ipod touch
test
Unknown

さらに、NLSSORT関数を使用して、単一のクエリの並べ替え設定を変更できます。

select model from client_source order by NLSSORT(model, 'NLS_SORT = LATIN_CI');
于 2013-02-15T16:25:23.820 に答える