Запрос SQLite для выбора столбцов из таблицы, если значение определенного столбца равно NULL

У меня есть sqlite db с 1 таблицей и 4 столбцами в этой таблице. Один из этих столбцов является необязательным и может содержать значения NULL. Я хочу получить значения в других 3 столбцах, если этот столбец имеет значение null.

Например,

column 1    column 2    column 3    column4
a           b                       d
e           f           g           h
i           j                       l

Чего я хочу добиться с точки зрения sqlite, так это:

SELECT column1 WHERE column3 IS NULL;

Поскольку IS NULL не работает в SQLite, я понятия не имею, как этого добиться. Я разработчик iOS с очень небольшим знанием db. Любая помощь будет высоко ценится.

ОБНОВЛЕНИЕ 1: @rptwsthi предложил включить значения по умолчанию в столбец 3, что определенно решит мою проблему. Но я думаю, что это нужно сделать при создании базы данных, я прав? Или это можно сделать как-то иначе?

ОБНОВЛЕНИЕ 2: я ссылался на документацию SQLite о IS NULL и IS NOT NULL. Но только IS NOT NULL возвращает значение, а IS NULL не работает. Даже ошибку не выдает.

UPDATE3: я вижу в столбце 3, когда у меня нет значения. Также я использую команды терминала. Итак, мой код

SELECT column1 WHERE column3 IS NULL;

С уважением, iSee


person iSee    schedule 25.08.2011    source источник
comment
Вот предложение: добавьте значение по умолчанию в столбец3 и выполните запрос в соответствии с этим.   -  person rptwsthi    schedule 25.08.2011
comment
Согласно этой статье на домашней странице SQLite, SQLite действительно поддерживает IS NULL и IS NOT NULL... что заставляет думать иначе?   -  person    schedule 25.08.2011
comment
Я ссылался на эту ссылку до того, как пришел сюда, но, к сожалению, IS NULL не работает, работает только IS NOT NULL. Я видел это в своей базе данных, а также на некоторых других форумах.   -  person iSee    schedule 25.08.2011
comment
Вы уверены, что ваш столбец действительно NULL, а не пустая строка, например?   -  person omz    schedule 25.08.2011
comment
@omz, пожалуйста, смотрите ОБНОВЛЕНИЕ 3. Он отображается как ‹null› вместо пустой записи столбца. Поэтому я предположил, что это ноль.   -  person iSee    schedule 25.08.2011
comment
Можем ли мы увидеть код, который вы выполняете; как вы можете видеть, многие люди считают, что IS NULL работает должным образом, поэтому проблема может заключаться в вашем коде, а не в самом SQLite.   -  person    schedule 25.08.2011


Ответы (2)


Из документации SQLite:

Операторы IS и IS NOT работают так же, как = и !=, за исключением случаев, когда один или оба операнда равны NULL. В этом случае, если оба операнда имеют значение NULL, то оператор IS оценивается как 1 (истина), а оператор IS NOT оценивается как 0 (ложь). Если один операнд имеет значение NULL, а другой нет, то оператор IS оценивается как 0 (ложь), а оператор IS NOT равен 1 (истина).

В соответствии с этим IS NULL должен отлично работать в SQLite.

person omz    schedule 25.08.2011

SQLite поддерживает функциональность IS NULL

можете ли вы дать вам код, где вы пишете запрос в xcode

Я пробовал IS NULL в своем sqllite, и он отлично работал.

person P.J    schedule 25.08.2011