Frage

Ich habe eine Tabelle in einer Oracle -Datenbank wie dieser

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

Wenn ich eine Auswahl in einer Anwendung wie Eichhörnchen wie folgt mache:

select * FROM MA_TABLE order by LABEL asc

Ich bekomme :

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

Was ist in Ordnung!

Aber wenn ich die gleiche Anfrage mit MyBatis ausführe:

<select id="selectMaTable" resultMap="resultMap" >
  Select * FROM MA_TABLE order by LABEL asc
</select>

Ich bekomme :

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

Die alphabetischen Charaktere kommen vor den numerischen Charakteren ... warum?

vielen Dank im Voraus,

Antoine

PS: Ich verwende org.mybatis: mybatis: jar: 3.0.5 und com.oracle:ojdbc6:jar:11.2.0.2.0 für den Datenbankzugriff

Bearbeiten :Diese verknüpfte helfen mir auch ein bisschen

Dank der Bemerkung von Soulcheck habe ich festgestellt, dass wenn ich die Reihenfolge nach Klausel mit Order by NLSSORT (atl_sit.atl_sit_lib, 'nls_sort = binary') ändere, funktioniert ...

Weiß jemand, wie man nls_sort = binär mit mybatis zwingt? (Es ist bereits in meiner Oracle -Datenbank in nls_database_parameters festgelegt)

War es hilfreich?

Lösung

Es sieht so aus, als wäre es ein Gebietsschema -Problem. Verbinden Sie sich mit Eichhörnchen und überprüfen Sie was NLS_LANG Es setzt und prüft dann, welches Gebietsschema Ihre Java -App verwendet. Ein weiterer Parameter, der die Sortierung beeinflussen kann, ist NLS_SORT.

Sie können den Wert von beidem überprüfen, indem Sie ausgeben:

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

Dann können Sie es in Java testen, indem Sie:

Locale.getDefault()

und setzen Sie es mit: Verwenden:

Locale.setDefault(Locale)

oder durch Hinzufügen von JVM -Parametern:

-Duser.country=en -Duser.language=en

bearbeiten

Frühlingsforen Empfehlen Sie ein Anmeldeauslöser, der NLS_SORT -Umgebungsvariable auf Benutzeranmeldungen festlegt. Es ist nicht mybatis, aber JDBC sollte trotzdem in Ihrem Fall funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top