语法CASE语句无效

时间:2017-11-17 01:39:34

标签: mysql sql syntax case

我一整天都在用SQL中的一个非常简单的case语句挣扎......

我有这段代码:

UPDATE `alugueis`
    SET    `status` = CASE
             WHEN `pago_em` is null THEN 'Atrasado'
             WHEN `pago_em` is '' THEN 'Atrasado'
             ELSE `status`
           END
WHERE  `vencimento` <= CURDATE()

,我得到的错误是:[1064] [42000] :( conn:235)你的SQL语法有错误;检查手册.......

我认为我混淆了两种形式的CASE,或者我是吗?

非常感谢你!

2 个答案:

答案 0 :(得分:1)

我想你打算:

UPDATE alugueis
    SET status = (CASE WHEN pago_em is null THEN 'Atrasado'
                       WHEN pago_em = '' THEN 'Atrasado'
                       ELSE status
                  END)
    WHERE vencimento <= CURDATE();

问题是is ''

通常在没有CASE

的情况下编写
UPDATE alugueis
    SET status = 'Atrasado'
    WHERE vencimento <= CURDATE() AND
          (pago_em IS NULL OR pago_em = '')

答案 1 :(得分:0)

您无法使用IS ''

UPDATE `alugueis`
    SET    `status` = CASE
             WHEN `pago_em` is null THEN 'Atrasado'
             WHEN `pago_em` = '' THEN 'Atrasado'
             ELSE `status`
           END
WHERE  `vencimento` <= CURDATE()