Oracle10 и JDBC: как заставить CHAR проигнорировать конечные пробелы в сравнении?

Решение было удалить контейнеры.

Кредиты @tkausl.

7
задан Vladimir Dyuzhev 2 March 2009 в 20:23
поделиться

3 ответа

Обратите внимание, что Oracle выдерживает сравнение CHAR значения с помощью дополненной пробелом семантики сравнения.

От правил сравнения типа данных,

Oracle использует дополненную пробелом семантику сравнения только, когда оба значения в сравнении являются или выражениями типа данных CHAR, NCHAR, текстовые литералы, или значениями, возвращенными Функцией пользователя.

В Вашем примере, 'ONT' переданный как связывать параметр, или это встроено в запрос дословно, когда Вы проиллюстрировали? Если связывать параметр, то удостоверьтесь, что он связывается как тип CHAR. Иначе проверьте клиентскую используемую версию библиотеки, поскольку действительно старые версии Oracle (например, v6) будут иметь другую семантику сравнения для CHAR.

8
ответ дан 7 December 2019 в 03:21
поделиться

Если Вы не можете изменить свою таблицу базы данных, можно изменить запрос.

Некоторые альтернативы для RTRIM:

.. ГДЕ PRT_STATUS как '% ONT'...

.. ГДЕ PRT_STATUS = 'ONT'... - 2 пробела позади T

.. ГДЕ PRT_STATUS = rpad ('ONT', 5'')...

1
ответ дан 7 December 2019 в 03:21
поделиться

Я изменил бы столбец CHAR (5) в varchar2 (5) в дб.

0
ответ дан 7 December 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: