• mysql返回值concat函数拼接,if函数,CASE WHEN函数条件判断。


    今天遇到一个sql的查询,需要把sql处理好返给前端展示,
    既有条件判断又要拼接返回结果,这里记录一下。

    sql:

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for lgs_operation_task_rules
    -- ----------------------------
    DROP TABLE IF EXISTS `lgs_operation_task_rules`;
    CREATE TABLE `lgs_operation_task_rules`  (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `site_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '站点id',
      `is_initialization` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否是初始化数据;是否是初始化数据0:否1:是',
      `task_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称',
      `task_rules` tinyint(3) NOT NULL DEFAULT 0 COMMENT '运维周期;0:每隔x天1:每月2:每隔x月3:每半年4:每年',
      `date_interval` tinyint(3) NULL DEFAULT NULL COMMENT '日期间隔;日期间隔:允许输入0和正整数',
      `reminder_date` tinyint(3) NULL DEFAULT NULL COMMENT '提前提醒天数;仅支持输入0与正整数。',
      `executive_role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '人员类别;0:硬件支持人员,1:软件支持人员,2:全部',
      `task_describe` varchar(900) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
      `subtask` json NULL COMMENT '子任务',
      `is_disable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否禁用0:否,1:是',
      `DEL_FLAG` tinyint(4) NOT NULL DEFAULT 0 COMMENT '删除状态;0:有效,1:无效',
      `CREATED_BY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
      `CREATED_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `UPDATED_BY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
      `UPDATED_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
      PRIMARY KEY (`ID`) USING BTREE,
      INDEX `site_id`(`site_id`) USING BTREE,
      INDEX `DEL_FLAG`(`DEL_FLAG`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '运维任务规则' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of lgs_operation_task_rules
    -- ----------------------------
    INSERT INTO `lgs_operation_task_rules` VALUES (1, NULL, 1, '定时重启123456', 7, 7, 13, '6', '系统默认,不可修改!放屁', 'true', 0, 0, NULL, '2022-08-19 00:00:00', NULL, '2022-08-19 00:00:00');
    INSERT INTO `lgs_operation_task_rules` VALUES (2, NULL, 1, '年度drp', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:10:56', NULL, '2022-08-19 15:41:29');
    INSERT INTO `lgs_operation_task_rules` VALUES (3, NULL, 1, '备份检查', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:12:05', NULL, '2022-08-19 15:41:35');
    INSERT INTO `lgs_operation_task_rules` VALUES (4, NULL, 1, '服务器巡检', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:12:30', NULL, '2022-08-19 15:41:42');
    INSERT INTO `lgs_operation_task_rules` VALUES (5, '105', 1, '定时重启', 0, 7, 3, '2', '系统默认,不可修改!', '{\"url\": \"http://www.bejson.com\", \"name\": \"BeJson\", \"page\": 88, \"links\": [{\"url\": \"http://www.google.com\", \"name\": \"Google\"}, {\"url\": \"http://www.baidu.com\", \"name\": \"Baidu\"}, {\"url\": \"http://www.SoSo.com\", \"name\": \"SoSo\"}], \"address\": {\"city\": \"江苏苏州\", \"street\": \"科技园路.\", \"country\": \"中国\"}, \"isNonProfit\": true}', 0, 0, NULL, '2022-08-19 15:40:42', NULL, '2022-09-01 18:33:07');
    INSERT INTO `lgs_operation_task_rules` VALUES (6, '105', 1, '年度drp', 3, 30, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:40:42', NULL, '2022-09-01 18:33:29');
    INSERT INTO `lgs_operation_task_rules` VALUES (7, '105', 1, '备份检查', 1, 1, 3, '1', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:40:42', NULL, '2022-09-01 18:22:46');
    INSERT INTO `lgs_operation_task_rules` VALUES (8, '105', 1, '服务器巡检', 2, 30, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:40:42', NULL, '2022-09-01 18:33:25');
    INSERT INTO `lgs_operation_task_rules` VALUES (12, '2', 1, '定时重启', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:53:35', NULL, '2022-08-19 15:53:35');
    INSERT INTO `lgs_operation_task_rules` VALUES (13, '2', 1, '年度drp', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:53:35', NULL, '2022-08-19 15:53:35');
    INSERT INTO `lgs_operation_task_rules` VALUES (14, '2', 1, '备份检查', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:53:35', NULL, '2022-08-19 15:53:35');
    INSERT INTO `lgs_operation_task_rules` VALUES (15, '2', 1, '服务器巡检', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:53:35', NULL, '2022-08-19 15:53:35');
    INSERT INTO `lgs_operation_task_rules` VALUES (19, '4', 1, '定时重启', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:59:33', NULL, '2022-08-19 15:59:33');
    INSERT INTO `lgs_operation_task_rules` VALUES (20, '4', 1, '年度drp', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:59:33', NULL, '2022-08-19 15:59:33');
    INSERT INTO `lgs_operation_task_rules` VALUES (21, '4', 1, '备份检查', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:59:33', NULL, '2022-08-19 15:59:33');
    INSERT INTO `lgs_operation_task_rules` VALUES (22, '4', 1, '服务器巡检', 0, 7, 3, '0', '系统默认,不可修改!', NULL, 0, 0, NULL, '2022-08-19 15:59:33', NULL, '2022-08-19 15:59:33');
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    if函数

    IF(expr, v1, v2)函数
    如果expr成立,返回值为v1,否则返回v2
    if(1<2,‘yes’,‘no’)

    SELECT
    	otr.task_name,
    	otr.task_describe,
    IF
    	( otr.is_disable = 0, '已启用', '已禁用' ) AS is_disable 
    FROM
    	lgs_operation_task_rules otr 
    WHERE
    	otr.site_id = 105
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    CASE WHEN 多个判断条件

    CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END

    该函数表示,如果expr值等于某个vn,则返回对应位置THEN后面的结果。如果与所有值都不相等,则返回ELSE后面的rn。

    SELECT
    	otr.task_name,
    	otr.task_describe,
    CASE
    		
    		WHEN otr.executive_role = 0 THEN
    		'硬件支持人员' 
    		WHEN otr.executive_role = 1 THEN
    		'软件支持人员' ELSE '全部' 
    	END AS role 
    FROM
    	lgs_operation_task_rules otr 
    WHERE
    	otr.site_id = 105
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    MySQL的concat函数可以连接一个或者多个字符串

    concat 等同于字符串连接符 ||,concat(字串1, 字串2, 字串3, …),将字串1、字串2、字串3,等字串连在一起。
    返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

    SELECT
    	otr.task_name,
    	otr.task_describe,
    	CONCAT( "提前", otr.reminder_date, "天" ) AS reminder_date 
    FROM
    	lgs_operation_task_rules otr 
    WHERE
    	otr.site_id = 105
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    结合使用

    SELECT
    	otr.task_name,
    	otr.task_describe,
    CASE
    		
    		WHEN otr.task_rules = 0 THEN
    		CONCAT( "每隔", otr.date_interval, "天" ) 
    		WHEN otr.task_rules = 1 THEN
    		CONCAT( "每隔", otr.date_interval, "月" ) 
    		WHEN otr.task_rules = 3 THEN
    		'每半年' ELSE '每年' 
    	END AS cycle,
    	CONCAT( "提前", otr.reminder_date, "天" ) AS reminder_date,
    CASE
    		
    		WHEN otr.executive_role = 0 THEN
    		'硬件支持人员' 
    		WHEN otr.executive_role = 1 THEN
    		'软件支持人员' ELSE '全部' 
    	END AS role,
    IF
    	( otr.is_disable = 0, '已启用', '已禁用' ) AS is_disable 
    FROM
    	lgs_operation_task_rules otr 
    WHERE
    	otr.site_id = 105
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述

  • 相关阅读:
    获取Class类的实例的几种方式
    JDK并发修改异常的一个“BUG“
    【CycleISP: Real Image Restoration via Improved Data Synthesis】ISP论文--1(个人笔记,勿喷)
    集火全屋智能“后装市场”,真正玩得转的没几个
    Springboot毕设项目老来福平台682f5(java+VUE+Mybatis+Maven+Mysql)
    亚马逊按关键字搜索商品 API 返回值说明
    SpreadsheetGear Version 9 Reail Crack
    编写基础程序:Hello World
    【iOS】导航栏的显隐与self.view.height
    分布式事务seata的使用
  • 原文地址:https://blog.csdn.net/u010797364/article/details/126649553