SQL> select * from nls_session_parameters where parameter='NLS_SORT';
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_SORT BINARY
SQL> SELECT * FROM my_data order by title;
TITLE
-----
321
Abc
Def
SQL> alter session set nls_sort=french;
Session altered
SQL> SELECT * FROM my_data order by title;
TITLE
-----
Abc
Def
321
字符串 无论NLS_SORT会话参数设置如何,您都可以构建一个应该给予预期结果的查询,例如:
SQL> SELECT *
2 FROM my_data
3 ORDER BY CASE
4 WHEN regexp_like(title, '[0-9]+\.?[0-9]*') THEN
5 1
6 ELSE
7 2
8 END, title;
TITLE
-----
321
Abc
Def
2条答案
按热度按时间dwbf0jvd1#
不是OracleMaven,但您应该能够在不更改会话的情况下使用
字符串
您可以在其中更改
NLS_SORT=
以满足您的需要(以下是值列表)请记住,docs说这将强制表扫描,所以首先过滤它们可能是有益的(但如果您选择所有表扫描,则无论如何都将使用表扫描)。
SQL Developer表现出不同行为的原因可能是因为它更改了会话。
也可以在整个会话中更改此设置:
型
rbl8hiat2#
您看到的行为差异可能是由于不同的
NLS_SORT
参数设置。请考虑:字符串
无论
NLS_SORT
会话参数设置如何,您都可以构建一个应该给予预期结果的查询,例如:型