MyBatis的IFNULL的使用小结

Mybatis-MySQL 中使用IFNULL(p1,p2)函数
但是有一些需要注意的地方.

假设数据

title: student

idnameage
1Ann18
2Bom19
3Hehe
SELECT name,age FROM student WHERE id = 3;

此时查询结果就是

nameage
hehe

使用IFNULL公式

SELECT name, IFNULL(age,0) FROM student WHERE id = 3;

此时查询结果就是

nameage
hehe0

也就是说, 使用IFNULL时, 如果IFNULL(p1,p2), 如果查询得到p1是null, 那么该字段就会被赋值为p2

注意事项

IFNULL只能对部分字段进行替换, 而如果整个结果时空, 那么IFNULL不起作用

SELECT name,age FROM student WHERE id = 4;

此时查询得到的整条数据都为null
那么此时 SELECT name, IFNULL(age,0) FROM student WHERE id = 4; 失效,依然得到一个空记录

配合Mybatis使用

假设目前有表格param, 有字段是param_name,表示该param的英文名, 有个param_chs_name字段表示该param的中文名,当中文名不存在的时候, 则返回其英文名字段,中文名字段可能不为null, 但可能是空字符串

SELECT param_name,(CASE WHEN IFNULL(trim(param_chs_name),'') = '' THEN param_name ELSE param_chs_name END) AS param_chs_name from param;

CASE WHEN 条件 THEN 结果1 ELSE 结果2 END
是mybatis常用的条件替换

另外还可以使用IF函数

SELECT param_name,(IF(IFNULL(trim(param_chs_name),'') = '' , param_name , param_chs_name )) AS param_chs_name from param;

能起到同样的效果!
IF(条件,结果1,结果2);

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值