У меня возникла проблема с модулем sqlite3 в Python 3, где я не могу понять, как заменить значения NULL
из базы данных другими, в основном строками и целыми числами.
Эта команда не выполняет работу, но и не вызывает исключений:
UPDATE table SET animal='cat' WHERE animal=NULL AND id=32
Столбец таблицы базы данных «животное» имеет тип TEXT
и заполняется NULL
, если не указано другое значение.
Столбец "id" имеет первичный ключ и поэтому содержит только уникальные целочисленные индексы строк.
Если определен столбец «животное», а не NULL
, приведенная выше команда работает безупречно.
Я могу заменить им существующие строки, целые числа и числа с плавающей запятой.
Что я здесь упускаю?
Спасибо.
Значение NULL
в SQL является особым, и для сравнения значений с ним вам нужно использовать операторы IS
и IS NOT
. Итак, ваш запрос должен быть таким:
UPDATE table
SET animal = 'cat'
WHERE animal IS NULL AND id = 32;
NULL
по определению означает «неизвестно» в SQL, поэтому сравнение столбца непосредственно с ним с =
также дает неизвестный результат.