Попытка написать простое вычисляемое выражение столбца (IF Statement) - PullRequest
1 голос
/ 17 января 2020

В моей таблице есть столбец с именем «BanquetPrize», а другой столбец с именем «PrizeWinner». Если поле «BanquetPrize» равно NOT NULL, я бы хотел, чтобы поле «PrizeWinner» автоматически заполнялось «ДА», а если оно IS NULL, оно должно быть «НЕТ». (Сохранялись)

1004 * Я действительно новичком SQL и исходя из таблиц DBF, где выражение было бы:
IF(IsNotBlank(BanquetPrize), "YES", "NO")

Но я не могу понять, как писать в SQL. То, что я пробовал:

(IIF [BanquetPrize]isnotnull then 'YES' else 'NO' end)
-- and also  --
(case when [BanquetPrize]isnotnull then 'YES' else 'NO' end)

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

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Вы можете использовать CASE или IIF

CASE

SELECT BanquetPrize, CASE WHEN BanquetPrize IS NOT NULL THEN 'YES' ELSE 'NO' END as PrizeWinner
FROM t1;

IIF

SELECT BanquetPrize, IIF(BanquetPrize iS NOT NULL,'YES','NO') as PrizeWinner
FROM t1;

Демо

0 голосов
/ 17 января 2020

In SQL Вы хотите использовать IS NULL, как показано в следующем коде

CASE [BanquetPrize]
 WHEN IS NULL THEN 'NO'
 ELSE 'YES'
END 

Вы также можете сделать что-то вроде следующего, чтобы дать столбцу возврата имя, в этом случае я давая ему имя, аналогичное столбцу, который BanquetPrize

CASE [BanquetPrize]
 WHEN IS NULL THEN 'NO'
 ELSE 'YES'
END AS 'BanquetPrize'

Дополнительный пример при использовании CASE в ORDER BY Clause

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

Подробнее о SQL CASE заявление и использование IS NULL здесь https://www.w3schools.com/sql/sql_case.asp

...