Синтаксис SQLite для условия If Else
Я использую базу данных SQLite. В моей таблице есть текстовый столбец под названием "Password". Ранее я выполнял простой запрос select * from myTable
для извлечения значений. Но теперь по требованию необходимо, чтобы если значение в столбце Password не равно NULL
, то оно отображалось как "Yes", в противном случае - "No". Это выглядит примерно так:
select * from myTable
if Password != NULL then Password = 'Yes'
else Password = 'No'
Я много искал информацию по этому вопросу, но не нашел подходящих ссылок или примеров. Буду благодарен за любую помощь или подсказку.
3 ответ(ов)
Ваш запрос выглядит правильно и должен работать, если ваша цель - добавить новый столбец PasswordPresent
, который будет содержать 'Yes', если поле Password
не пустое (то есть не NULL), и 'No' в противном случае. Вот краткое объяснение вашего SQL-запроса:
SELECT *,
CASE WHEN Password IS NOT NULL
THEN 'Yes'
ELSE 'No'
END AS PasswordPresent
FROM myTable
SELECT *
выбирает все существующие столбцы из таблицыmyTable
.CASE
является условным оператором, который проверяет, что полеPassword
не является NULL.- Если условие истинно, добавляется новый столбец
PasswordPresent
со значением 'Yes'. - Если условие ложно, в
PasswordPresent
будет записано значение 'No'. - Результат выполнения этого запроса будет содержать все оригинальные столбцы из
myTable
, а также новый столбец с информацией о наличии значения вPassword
.
Если у вас есть дополнительные вопросы или нужна помощь с другим запросом, не стесняйтесь спрашивать!
SQLite использует синтаксис CASE WHEN THEN END. Вы можете прочитать больше об этом здесь: http://www.sqlite.org/lang_expr.html.
Я не проверял синтаксис, но, полагаю, что что-то вроде этого:
SELECT *
FROM myTable CASE WHEN Password != NULL THEN Password = 'Yes' ELSE Password = 'No' END;
Хотя я не уверен, что это вообще сработает. Если вы пытаетесь получить "YES" или "NO" в зависимости от наличия пароля в таблице для каждой записи, возможно, вам подойдет что-то ближе к этому:
SELECT Field1,
Field2,
(CASE WHEN Password IS NOT NULL THEN
'Yes'
ELSE
'No'
END) as 'Password'
FROM myTable;
Обратите внимание, что вместо != NULL
нужно использовать IS NOT NULL
, так как сравнение с NULL в SQL работает по-другому. Опять же, у меня нет доступа к SQLite, чтобы протестировать это самостоятельно, поэтому, возможно, код требует доработки.
Понимаю, вам нужно изменить значение столбца Password
на "YES", если в нем уже есть значение, и на "NO", если в нем нет значения (т.е. оно равно NULL
).
Для выполнения этой задачи можете использовать следующие два запроса:
UPDATE myTable SET Password = 'YES' WHERE Password IS NOT NULL;
UPDATE myTable SET Password = 'NO' WHERE Password IS NULL;
Первый запрос обновит все записи, у которых в столбце Password
есть значение, устанавливая его равным "YES". Второй запрос изменит значение на "NO" для всех записей, где Password
имеет значение NULL
.
Обратите внимание, что использование одинарных кавычек для строковых значений является стандартом в SQL.
Как вывести список таблиц в файле базы данных SQLite, открытом с помощью ATTACH?
Как вставить несколько строк в SQLite?
SQL строковое значение, охватывающее несколько строк в запросе
Как синхронизировать базу данных Android с онлайн SQL Server?
Удаление таблицы в старой версии SQLite, где не поддерживается IF EXISTS