как получить нулевые записи из базы данных оракула, если столбец имеет числовой тип и допускает значение null

У меня есть таблица базы данных Oracle с тремя столбцами: Id, RTOName, VehicleCode. моя таблица выглядит так, как показано ниже

введите здесь описание изображения

RTOName — это тип varchar2, а VehicleCode — NUMBER (2,0) и является полем, допускающим значение NULL. Итак, у меня есть данные, как показано ниже, и я хочу получить записи с Some VehicleCode и с нулевым значением. Такой дизайн таблицы уже изменился, что сильно повлияет на мое приложение. У меня есть собственный запрос JPA, который я использовал таким образом, и я хочу получить записи с нулевыми значениями.

Query query = createNativeQuery("select RTOName,VehicleCode from tbl_vehiclecodes WHERE VehicleCode=#vCode");
query.setParameter("vCode", vehicleCode);

Из приведенного выше запроса я получу только запись с ненулевым значением. Например. для параметра vCode 61 я получу Marathalli,61. Если мой vCode равен нулю, у меня проблема, и я не получу никакой записи. Как добиться этого в Native Query? Я знаю, что мы можем использовать IS NULL в предложении Query in where. Поскольку у меня есть некоторые цифры здесь В моем случае, как это решить? Любая помощь

Спасибо


person Chidambar Shiragalle    schedule 07.09.2020    source источник


Ответы (1)


Мы можем использовать OR здесь,

Следующий запрос даст вам записи с совпадающими записями для параметра vCode вместе со строками, имеющими значение null, и в случае, если vCode имеет значение null, вы получите записи только со значениями null.

Query query = createNativeQuery("select RTOName,VehicleCode from tbl_vehiclecodes WHERE (VehicleCode is null or VehicleCode=#vCode)");

Правка: учитывая сомнения @Ranagal

Если вы хотите, как в случае с нулевым значением, переданным в vCode, вы хотите, чтобы все записи имели значение в vehiclecode, а также с нулевым значением, тогда нам нужно изменить запрос, например,

Query query = createNativeQuery("select RTOName,VehicleCode from tbl_vehiclecodes WHERE (VehicleCode is null or VehicleCode=coalesce(#vCode,VehicleCode))");
person Sujitmohanty30    schedule 07.09.2020
comment
@Chidambar, твой вопрос звучит не совсем ясно. Каков именно ваш вклад? И что именно является выходом для этого ввода? Вы хотите сказать, что иногда вы передаете NULL в качестве входных данных для VehicleCode, а иногда вы передаете число? И что вы хотите отобразить в каждом случае? Вы хотите, чтобы VehicleCode с нулевым значением был включен в дополнение к ненулевому VehicleCode? Пожалуйста, объясните. - person Ranagal; 07.09.2020
comment
@Chidambar Shiragalle, вы пробовали первый вариант, который я предложил, я считаю, что он соответствует вашим требованиям. - person Sujitmohanty30; 08.09.2020
comment
Привет @Ranagal, Да, иногда я буду передавать значение NULL во входной параметр VehicleCode, а иногда и номер. В случае входного параметра NULL мне нужны результаты с NULL VehicleCode, а в случае числа я хочу результат с номером в VehicleCode. Мне не нужны результаты NULL VehicleCode при вводе номера. Спасибо - person Chidambar Shiragalle; 08.09.2020
comment
Привет @ Sujitmohanty30, Ваше первое решение очень хорошо подходит для моего случая. Большое спасибо :) - person Chidambar Shiragalle; 08.09.2020
comment
@ Chidambar Shiragalle, спасибо, не могли бы вы принять это и поставить галочку, если считаете, что это решает вашу проблему. - person Sujitmohanty30; 08.09.2020