每天一道题 ^.^ 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容