#postgresql
#postgresql
Вопрос:
Я использую postgresql для базы данных. И условие в поле не равно нулю. Когда пользователь оставляет поле пустым для этого поля и нажимает enter, он выдает исключение с нулевым указателем, потому что в postgresql для целого числа он не примет accept «».Есть идеи о том, как справиться с этим случаем
Комментарии:
1.
Null pointer exception
? Вы уверены, что это именно то, что вы получаете?2. Какова ваша среда разработки? Язык? Уровень сохраняемости?
3. Прежде чем спрашивать, как избежать проблемы, вы должны спросить себя: «чего я ожидаю от моей системы в этом случае»? (когда целочисленное поле оставлено пустым в форме ввода).
Ответ №1:
Если вы можете изменить инструкцию INSERT, вы можете использовать функцию COALESCE() для автоматической замены нулевого значения другим указанным вами значением.
Вот пример автоматической вставки 0 (нуля) в поле status, когда переменная $status не установлена:
INSERT INTO foo (name, status) VALUES ($name, COALESCE($status, 0) );
Функция COALESCE может принимать любое количество аргументов и возвращает первое найденное ненулевое значение. Это удобно, когда у вас есть «водопад» значений, которые вы хотите попробовать, прежде чем остановиться на значении по умолчанию. Например:
COALESCE($status1, $status2, $status3, $status4, 0)
Ответ №2:
Поскольку ваше поле не принимает NULL
, вы должны задать для него фактическое целое число.
Замените пустую строку на 0
(или другое значение по умолчанию) на стороне клиента.
Комментарии:
1. Можете ли вы проверить, на правильном ли я пути? var abc = document.getElementById(‘abc’).value; если(abc == «» ){ abc.value = 0; }
2. @divya: да, что-то вроде этого. Но поскольку это
javascript
и может быть подделано, вам следует дополнительно очистить любой пользовательский ввод на уровне вашей серверной базы данных.
Ответ №3:
Проверьте свою форму с помощью javascript, и если в текстовом поле появляется «», просто присвоите 0 этому значению. Затем передайте это значение как целое, и это все.
Комментарии:
1. Можете ли вы проверить, на правильном ли я пути? var abc = document.getElementById(‘abc’).value; if(«».equals(abc)){ abc.value = 0; }
2. Да, это так. Это что-то вроде этого.