mysql中使用逻辑判断,mysql中的几种判断语句

在使用mysql过程中,经常会有根据某个字段的不同值显示语义化的名称的需求,例如一张用户表,有个sex字段存放的是用户性别,一般不会直接存男,女,未知这种字符串,而是存的0,1,2这种整型,整型的好处是查询效率高于字符串,查询出结果要显示成男,女这种,通常做法是查询出结果,在结果里if判断再赋值成字符串。其实mysql提供了类似判断的语法可以直接查出语义化的结果。 ##创建测试数据 创建一张用户表user,有username(用户名),sex(性别 3-未知 1-男 2-女)两个字段。

CREATE TABLE IF NOT EXISTS `user`(

`id` INT UNSIGNED AUTO_INCREMENT,

`username` VARCHAR(100) NOT NULL,

`sex` INT UNSIGNED,

PRIMARY KEY ( `id` )

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入测试数据:

insert into user (username,sex) values('lilei',1);

insert into user (username,sex) values('hanmeimei',2);

insert into user (username,sex) values('zhansan',3);

测试数据:

c185fac703a3849d8f20568ef04e9848.png

##方法一.CASE函数 case函数语法:

CASE condition

WHEN value1 THEN returnvalue1

WHEN value2 THEN returnvalue2

WHEN value3 THEN returnvalue3

……

ELSE defaultvalue

END

举例:

SELECT username,(CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END) as sex FROM user;

查询结果如图:

171aca95f9ebdee4c355c61944617c6d.png

##方法二.IF()函数 CASE函数可以实现非常复杂的逻辑判断,实现满足条件就A,否则就B这样简单的判断逻辑的话,CASE函数就显得臃肿。MYSQL提供了IF()函数用于简化这种逻辑判断,其语法格式如下:IF(condition,A,B) 如果condition条件为真,就返回A,否则返回B。所以如果有多个条件,就无法使用IF函数。IF()返回一个数字或字符串。

select username,if(sex=1,'男','女') as sex from user;

查询结果如图:

1708eb9dd543a28135b8b7d393a2a3f4.png

可以看到,username为zhangsan的显示性别为女,因为我们条件是sex=1为男,其它都会女。所以IF函数用于只有两种情况的判断。mysql还有一个IFNULL(value1,value2)函数,这个函数一般用来替换NULL值的,我们知道NULL值是不能参与数值运算的。

##方法三.字符串操作ELT() 语法: ELT(N,str1,str2,str3,...) 如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。

SELECT username,ELT(sex,'男','女','未知') as sex FROM user

查询结果如图:

c51e24191b06b7fbefaf6265a7d83b28.png

烦请各位看官觉得有用就给个推荐吧!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值