我要更改显示薪水低于900的员工的新薪水作为新薪水
SELECT
ename,
job,
sal ,
CASE sal
WHEN sal<900 THEN sal+100
ELSE sal
END 'NewSalary'
FROM emp;
第15级状态1行4的消息102
'<'附近的语法不正确。
答案 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
。