0

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

12

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

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

Я много искал информацию по этому вопросу, но не нашел подходящих ссылок или примеров. Буду благодарен за любую помощь или подсказку.

3 ответ(ов)

0

Ваш запрос выглядит правильно и должен работать, если ваша цель - добавить новый столбец 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.

Если у вас есть дополнительные вопросы или нужна помощь с другим запросом, не стесняйтесь спрашивать!

0

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, чтобы протестировать это самостоятельно, поэтому, возможно, код требует доработки.

0

Понимаю, вам нужно изменить значение столбца 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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь