Я хочу выполнить запрос sqlite, который возвращает строки, в которых определенный столбец имеет (нулевое) значение.Я пробовал много вариантов, таких как
SELECT ContribId FROM stack_contrib_tab WHERE BatchId IS NULL
SELECT ContribId FROM stack_contrib_tab WHERE BatchId ISNULL
. Они возвращали все строки, независимо от того, был ли BatchId нулевым или нет.Интересующие строки показывают "(null)" в столбце DbVisualizer.Тогда я подумал, что, возможно, столбец действительно пустой, поэтому я попытался
SELECT ContribId FROM stack_contrib_tab WHERE BatchId = ''
SELECT ContribId FROM stack_contrib_tab WHERE BatchId = ""
SELECT ContribId FROM stack_contrib_tab WHERE BatchId = '""'
. Это не привело к ошибкам, но и к набору результатов тоже.Тогда я подумал, что, возможно, это буквально '(null)', поэтому я попытался
SELECT ContribId FROM stack_contrib_tab WHERE BatchId = '(null)'
Это также привело к пустому набору результатов.Тогда я подумал, может быть, я заставлю значение по умолчанию быть нулевым, поэтому я создал столбец таблицы следующим образом:
BatchId DEFAULT NULL
Это тоже не сработало.Поле все еще показывало (ноль), и запросы вели себя так же.Тогда я подумал, хорошо, я буду использовать 0 вместо NULL.Итак, я создал поле как
BatchId INTEGER DEFAULT 0
Как вы уже догадались.Это тоже не сработало.Столбец все еще показывал (ноль).Затем я где-то читал, что вам также нужно установить для столбца значение NOT NULL, поэтому я попытался
BatchId INTEGER DEFAULT 0 NOT NULL
Теперь я получаю сообщение об ошибке
org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_NOTNULL] AСбой ограничения NOT NULL (ограничение NOT NULL не выполнено: stack_contrib_tab.BatchId)
Что я делаю не так?
Обновление: Я успешно установил BatchId в 0, а не в NULL.Ошибка произошла позже во время вставки, а не при создании таблицы, как я думал.