Pregunta

Tengo una tabla en una base de datos Oracle como esta

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

Cuando hago una selección en una aplicación como Squirrel como esta:

select * FROM MA_TABLE order by LABEL asc

Yo obtengo :

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

lo cual está bien !

Pero cuando ejecuto la misma solicitud usando MyBatis:

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

Yo obtengo :

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

Los personajes alfabéticos vienen ante los personajes numéricos ... ¿por qué?

gracias de antemano,

Antoine

PD: Estoy usando org.mybatis: mybatis: jar: 3.0.5 y com.oracle:ojdbc6:jar:11.2.0.2.0 para el acceso a la base de datos

Editar :esto vinculado me ayuda un poco también

Gracias al comentario de SoulCheck, descubrí que si cambio el orden por cláusula con orden por nlssort (atl_sit.atl_sit_lib, 'nls_sort = binary') funciona ...

¿Alguien sabe cómo forzar nls_sort = binary con mybatis? (Ya está configurado en mi base de datos Oracle en NLS_DATABASE_PARAMETERS)

¿Fue útil?

Solución

Parece que podría ser un problema local. Conéctese con Squirrel y verifique qué NLS_LANG Establece, luego verifique qué lugar utiliza su aplicación Java. Otro parámetro que puede influir en la clasificación es NLS_SORT.

Puede verificar el valor de ambos emitiendo:

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

Entonces puedes probarlo en Java usando:

Locale.getDefault()

y establecerlo usando:

Locale.setDefault(Locale)

o agregando parámetros JVM:

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

editar

Foros de primavera Recomendar crear un disparador de inicio de sesión que establezca la variable ambiental NLS_SORT en el inicio de sesión del usuario. No es mybatis, sino JDBC de todos modos, por lo que debería funcionar en su caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top