案例表达的替代形式,因为它不支持'when'中的'<','>'和'='

时间:2019-09-28 14:00:51

标签: mysql

我要更改显示薪水低于900的员工的新薪水作为新薪水

SELECT 
    ename, 
    job, 
    sal , 
    CASE sal 
        WHEN sal<900 THEN sal+100         
        ELSE sal 
    END 'NewSalary'
FROM emp;
  

第15级状态1行4的消息102

     

'<'附近的语法不正确。

2 个答案:

答案 0 :(得分:2)

您没有正确使用CASE

考虑:

SELECT 
    ename, 
    job, 
    sal , 
    CASE WHEN sal<900 THEN sal+100 ELSE sal END NewSalary 
FROM emp;

注意:有一种语法允许使用CASE <expr> WHEN <value> THEN ...,但仅可用于检查表达式是否等于该值等于,并且不支持除等于以外的其他比较

答案 1 :(得分:1)

在这种情况下,您不需要CASE语句,因为MySql将sal < 900的{​​{1}}评估为1的布尔表达式,将TRUE评估为0的布尔表达式:

FALSE

因此,如果SELECT ename, job, sal, sal + (sal < 900) * 100 NewSalary FROM emp; 的结果将是sal < 900,因为sal + 100的计算结果为sal < 900,但是当1时的结果将是{{1} },因为sal >= 900的评估结果为sal

相关问题