【发布时间】:2016-06-01 22:26:40
【问题描述】:
如果我运行这个查询:
select distinct column_value as test
from table(sys.dbms_debug_vc2coll('AFGHANISTAN','*AFRIQUE','(AUCUN)','ITALIE','**MONDE'))
order by test asc;
我希望:
(AUCUN)
**MONDE
*AFRIQUE
AFGHANISTAN
ITALIE
或者
AFGHANISTAN
ITALIE
*AFRIQUE
**MONDE
(AUCUN)
但这就是我得到的:
AFGHANISTAN
*AFRIQUE
(AUCUN)
ITALIE
**MONDE
所以它看起来完全忽略了( 和*。
如果我将会话 NLS_SORT 参数从 FRENCH 更改为 BINARY
alter session set NLS_SORT=BINARY;
顺序没问题。
但我真的不应该改变我的客户数据库设置,默认情况下获得这个奇怪的订单有什么原因吗?
我可以通过 JPA 标准 API 做任何事情来在不更改数据库的情况下获得良好的订单吗?
编辑:这是用于订单的表达式:
// My Original field expression used for the sort
Expression<String> myFieldExp = root.get("mySortField");
Expression<String> sortExpWithNLSfix = builder.function("nlssort", String.class, myFieldExp , builder.literal("nls_sort=binary"));
myCritQuery.orderBy(builder.asc(sortExpWithNLSfix);
【问题讨论】:
-
那个表达真的很有帮助
标签: oracle sql-order-by