別のオラクルオーダー
-
27-10-2019 - |
質問
私はこのようなOracleデータベースにテーブルを持っています
ID | LABEL
------------
1 | label alpha 1
2 | label alpha 2
3 | label alpha a
私がこのようなリスのようなアプリケーションで選択を行うとき:
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:11.2.0.2.0を使用しています。
編集 :これは私も少し助けてくれます
SoulCheckの発言のおかげで、NLSSORT(atl_sit.atl_sit_lib、 'nls_sort = binary')による注文で句ごとに注文を変更すると...
NLS_SORT =バイナリをMyBatisで強制する方法を知っている人はいますか? (nls_database_parametersの私のOracleデータベースにすでに設定されています)
解決
それはロケールの問題であるように見えます。リスとつながり、何を確認してください NLS_LANG
設定してから、Javaアプリを使用するLocaleを確認します。ソートに影響を与える可能性のある別のパラメーターは次のとおりです 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
編集
春のフォーラム ユーザーログオンにnls_sort環境変数を設定するログオントリガーの作成をお勧めします。それはmybatisではありませんが、とにかくJDBCなので、あなたの場合は機能するはずです。