新建了一张测试的表,用来测试
CREATE TABLE `my_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`status` varchar(255) NOT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of my_order
-- ----------------------------
INSERT INTO `my_order` VALUES ('1', '任务1', '已完成');
INSERT INTO `my_order` VALUES ('2', '任务2', '已完成');
INSERT INTO `my_order` VALUES ('3', '任务3', '已完成');
INSERT INTO `my_order` VALUES ('4', '任务4', '未完成');
INSERT INTO `my_order` VALUES ('5', '任务5', '未完成');
INSERT INTO `my_order` VALUES ('6', '任务6', '未完成');
INSERT INTO `my_order` VALUES ('7', '任务7', '已取消');
INSERT INTO `my_order` VALUES ('8', '任务8', '已取消');
1、if相关判断
ifnull(expr1,expr1):常用来替换Null值,如果expr1的值为null,则取expr2的值,expr2可以是列名,也可以是一个具体的值
if(expr1,expr2,expr3):这个跟java中的三元表达式差不多,如果expr1条件为true,那么返回expr2,否则返回expr3
例如执行: select id,if(status='已完成',true,false) from my_order
case():流程控制的函数
第一种用法:
CASE expression WHEN value1 THEN returnvalue1 WHEN v