Заказ Oracle по разному - PullRequest
       16

Заказ Oracle по разному

2 голосов
/ 11 января 2012

У меня есть таблица в базе данных 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

Буквенные символыперед числовыми символами ... почему ??

заранее спасибо,

Antoine

Ps: я использую org.mybatis: mybatis: jar: 3.0.5и com.oracle:ojdbc6:jar:11.2.0.2.0 для доступа к базе данных

Редактировать: эта ссылка поможет мне также немного

Благодаря замечанию Соулчека, яобнаружил, что если я изменяю порядок по выражению с помощью ORDER BY NLSSORT (ATL_SIT.ATL_SIT_LIB, 'NLS_SORT = BINARY'), это работает ...

Кто-нибудь знает, как заставить NLS_SORT = BINARY с myBatis?(Это уже установлено в моей базе данных Oracle в NLS_DATABASE_PARAMETERS)

1 Ответ

3 голосов
/ 11 января 2012

Похоже, это может быть языковой вопрос. Соединитесь с белкой и проверьте, что 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

редактировать

весенние форумы рекомендуют создавать триггер входа в систему, который устанавливает переменную среды NLS_SORT при входе пользователя. Это не MyBatis, но, в любом случае, jdbc должен работать в вашем случае.

...