每天一道题 ^.^ 2022/08/19

image.png

没想到吧,换标题了。
这确实是个简单题。但是sql基础不扎实啊
用到一个函数判断locate,主要是为了判断姓名是否以M开头。用法如下:

!locate('M',"Carmelo")=1

当然是不对的,因为开始写的伪代码,是
!locate('M',"Carmelo")==1,如果!的运算优先级较低,当然是生效的。但是这是sql。。所以是先运算!localte('M',"Carmelo"),正好结果是bool类型被转换为了0 | 1,所以竟然通过了一些用例。
最终写法

select e.employee_id,
(e.salary*(if(MOD(e.employee_id,2)=1 && !(locate('M',name)=1),1,0))) as bonus
from Employees e
order by e.employee_id

你可能感兴趣的:(每天一道题 ^.^ 2022/08/19)