È l'effetto dell'ordinamento linguistico:
SQL> alter session set nls_sort=binary;
Session altered.
SQL> get afiedt.buf
1 select * from (
2 select '&' txt from dual
3 union
4 select '&'||'Z' txt from dual
5 union
6 select '&'||'A' txt from dual
7 union
8 select 'P' txt from dual
9 union
10 select 'N' txt from dual
11 )
12* order by txt
SQL> /
TX
--
&
&A
&Z
N
P
SQL> alter session set nls_sort = 'Dutch';
Session altered.
SQL> get afiedt.buf
1 select * from (
2 select '&' txt from dual
3 union
4 select '&'||'Z' txt from dual
5 union
6 select '&'||'A' txt from dual
7 union
8 select 'P' txt from dual
9 union
10 select 'N' txt from dual
11 )
12* order by txt
SQL> /
TX
--
&
&A
N
P
&Z
Fa la differenza per quale lingua stai ordinando. Alcuni caratteri hanno valori diversi a seconda della loro lingua. Con binary si ordina usando i valori ascii.