【问题标题】:Trying to write a simple computed column expression (IF Statement)尝试编写一个简单的计算列表达式(IF 语句)
【发布时间】:2020-05-04 01:59:15
【问题描述】:

我的表中有一个名为“BanquetPrize”的列和另一个名为“PrizeWinner”的列。如果“BanquetPrize”字段是NOT NULL,我希望“PrizeWinner”字段自动填写“是”,如果是IS NULL,它应该是“否”。 (持续)

我对 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)

显然这两个语法都有问题,所以我希望有人能教我正确的写作方法吗?

【问题讨论】:

    标签: calculated-columns computed-field


    【解决方案1】:

    在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'
    

    ORDER BY 子句中使用 CASE 时的附加示例

    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

    【讨论】:

    • 感谢您的快速回复。 (请耐心等待,因为我是个新手。)在您的第一个示例中,我理解语法,但是所有这些是如何写在一行上的?计算列的“公式”字段中没有空间输入 4 行,如您所示?这一切只是作为一个句子一起运行吗?
    【解决方案2】:

    您可以使用 CASE 或 IIF

    案例

    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;
    

    Demo

    【讨论】:

    • 我一定是做错了什么。我复制了你的表达式,只是我将“t1”的表名更改为 FEES 的实际表名,并且它不适合分配给公式的空间。这是我尝试输入的内容: SELECT BanquetPrize, IIF(BanquetPrize iS NOT NULL,'YES','NO') as PrizeWinner FROM fee;这就是它所需要的:SELECT BanquetPrize, IIF(BanquetPrize iS NOT NULL,'YES','NO') as PrizeWinner
    • "...分配给公式的空间..." 你在这上面用什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2015-07-29
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    相关资源
    最近更新 更多