Синтаксис SQLite для условия If Else

Я использую базу данных SQLite. В моей таблице есть текстовый столбец «Пароль». Раньше для получения значений, которые я использовал для выполнения простого запроса «select * from myTable». Но теперь требование состоит в том, что если значение пароля не равно NULL, тогда мне нужно показать его как «да» или иначе «нет». Это что-то вроде: -

select * from myTable
if Password != NULL then Password = 'Yes'
else Password = 'No'

Я много искал об этом, но у меня не было никакой правильной ссылки или примера. Любая помощь или предложение будут действительно оценены.

-sattu

23
nl ja de
НИКОГДА не сравнивайте ничего с NULL (! = NULL ). Вместо этого используйте IS NULL (IS NOT NULL). Поскольку это условие ВСЕГДА ЛОЖЬ NULL = NULL -> FALSE NULL! = NULL -> FALSE .
добавлено автор valex, источник
Вопрос старый, но для всех, все еще читающих это, всегда используйте IS NULL/IS NOT NULL как выражение, а не ==,! = Nor <>.
добавлено автор MKesper, источник
Спасибо Valex. Я использую (<> '') вместо (IS NOT NULL)
добавлено автор Satya Prakash Panigrahi, источник

2 ответы

SELECT *,
       CASE WHEN Password IS NOT NULL
       THEN 'Yes'
       ELSE 'No'
       END AS PasswordPresent
FROM myTable
44
добавлено

SQLite uses the CASE WHEN THEN END syntax. You can read more about that here: http://www.sqlite.org/lang_expr.html

Я не проверял синтаксис, но я предполагаю что-то вроде этого:

select * 
from myTable CASE WHEN Password != NULL THEN Password = 'Yes' ELSE Password = 'No' END;

Хотя я не уверен, что это сработает. Если вы пытаетесь получить ДА или НЕТ, основываясь на наличии пароля в таблице для каждой записи, возможно, это ближе к тому, что вы хотите:

SELECT Field1, 
    Field2,
    (CASE WHEN Password != NULL THEN 
        'Yes' 
     ELSE 
        'No' 
     END) as 'Password'
FROM myTable;

Опять же, в настоящее время у меня нет доступа к SQLite, чтобы проверить это самостоятельно, поэтому, вероятно, ему нужна какая-то работа.

10
добавлено
Спасибо, Ник. Я постараюсь работать над вашим предложением. Это правильно, мне нужно проверить наличие пароля в каждой записи. Но даже в вашем втором предложении использование «select * ...» было бы более удобным. В любом случае я попробую их реализовать и ответить на ваши отзывы.
добавлено автор Satya Prakash Panigrahi, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)