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;
插⼊测试数据:
mysql菜鸟教程字符串型
insert into user (username,sex) values('lilei',1);
insert into user (username,sex) values('hanmeimei',2);
insert into user (username,sex) values('zhansan',3);
测试数据:
##⽅法⼀.CASE函数 case函数语法:
CASE condition
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
…dedecms模版开发
bean有什么特殊含义…
ELSE defaultvalue
if函数大于等于且小于END
举例:
SELECT username,(CASE sex WHEN 1 THEN '男' WHEN 2 THEN '⼥' ELSE '未知' END) as sex FROM user;
查询结果如图:
##⽅法⼆.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;
查询结果如图:
可以看到,username为zhangsan的显⽰性别为⼥,因为我们条件是sex=1为男,其它都会⼥。所以IF函数⽤于只有两种情况的判断。mysql还有⼀个IFNULL(value1,value2)函数,这个函数⼀般⽤来替换N
ULL值的,我们知道NULL值是不能参与数值运算的。
##⽅法三.字符串操作ELT() 语法: ELT(N,str1,str2,str3,...) 如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N ⼩于 1 或⼤于参数的数量,返回 NULL。
SELECT username,ELT(sex,'男','⼥','未知') as sex FROM user
查询结果如图:
烦请各位看官觉得有⽤就给个推荐吧!spring请求流程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论