gpt4 book ai didi

java - 不同的oracle命令

转载 作者:行者123 更新时间:2023-12-04 06:02:14 25 4
gpt4 key购买 nike

我在这样的 Oracle 数据库中有一个表

ID   | LABEL
------------
1 | label alpha 1
2 | label alpha 2
3 | label alpha a

当我在像 Squirrel 这样的应用程序中进行选择时:
select * FROM MA_TABLE order by LABEL asc

我得到:
ID   | LABEL
------------
1 | label alpha 1
2 | label alpha 2
3 | label alpha a

很好!

但是当我使用 MyBatis 执行相同的请求时:
<select id="selectMaTable" resultMap="resultMap" >
Select * FROM MA_TABLE order by LABEL asc
</select>

我得到:
ID   | LABEL
------------
3 | label alpha a
1 | label alpha 1
2 | label alpha 2

字母字符出现在数字字符之前......为什么?

提前致谢,

安托万

Ps:我使用 org.mybatis:mybatis:jar:3.0.5 和 com.oracle:ojdbc6:jar:11.2.0.2.0 进行数据库访问

编辑 :
this linked help me a bit also

感谢 Soulcheck 的评论,我发现如果我使用 ORDER BY NLSSORT(ATL_SIT.ATL_SIT_LIB, 'NLS_SORT=BINARY') 更改 order by 子句,它会起作用......

有谁知道如何使用 myBatis 强制 NLS_SORT=BINARY ?
(它已经在我的 Oracle 数据库中的 NLS_DATABASE_PARAMETERS 中设置了)

最佳答案

看起来这可能是语言环境问题。与松鼠连接并检查什么NLS_LANG它设置,然后检查什么语言环境使用您的 Java 应用程序。另一个可以影响排序的参数是 NLS_SORT .

您可以通过发出以下命令来检查两者的值:

select parameter,value from NLS_DATABASE_PARAMETERS where parameter in('NLS_LANGUAGE','NLS_SORT');

然后,您可以使用以下方法在 Java 中对其进行测试:
Locale.getDefault()

并使用以下方法进行设置:
Locale.setDefault(Locale)

或者通过添加 jvm 参数:
-Duser.country=en -Duser.language=en

编辑

spring forums建议创建一个登录触发器,在用户登录时设置 NLS_SORT 环境变量。它不是 MyBatis,而是 jdbc,所以应该适用于您的情况。

关于java - 不同的oracle命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8818201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com