<返回更多

mysql中case when和like结合

2023-09-20  今日头条  零一间
加入收藏

介绍
MySQL中case when和like结合可以用于对文本数据进行条件判断和模式匹配,特别是在需要根据复杂的条件对结果进行分类或转换时。

这种方法在数据分析、报表生成、数据仓库建设等场景中非常有用。

优点

  • 模式匹配:LIKE 运算符可以用于模式匹配,使用通配符(例如 % 和 _)来匹配任意字符或字符序列。这使得你可以在 CASE WHEN 语句中根据不同的模式对结果进行分类或转换。
  • 灵活性:LIKE 运算符提供了更大的灵活性,因为你可以使用通配符来匹配任意的字符串模式。相比之下,简单的比较运算符(如 = 或 <>)只能进行精确匹配。
  • 条件简化:使用 LIKE 运算符可以简化条件表达式,尤其是当你需要匹配多个模式时。你可以在 CASE WHEN 语句中使用多个 WHEN 子句,每个子句使用不同的模式进行匹配,从而减少了代码的复杂性。

缺点

  • 在大量数据的情况下,可能会影响查询性能,因为需要逐行进行判断和匹配。
  • 如果使用过多的CASE WHEN语句,可能会导致代码可读性降低,维护起来较困难。
SELECT column1, column2,  
    CASE  
        WHEN column1 LIKE 'pattern1%' THEN 'Result 1'  
        WHEN column1 LIKE 'pattern2%' THEN 'Result 2'  
        ELSE 'Other Result'  
    END AS result  
FROM your_table;

示例(统计岗位类别,统计岗位人数)

新建表

CREATE TABLE `员工` (
`员工ID` int(11) NOT NULL AUTO_INCREMENT,
`姓名` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`职位` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`员工ID`)
) ENGINE=InnoDB;

写入测试数据

INSERT INTO 员工 ( 姓名, 职位 )
VALUES
( '董永', '销售经理' ),
( '赵四', '软件开发工程师' ),
( '赵本山', '销售代表' ),
( '李云龙', '人力资源经理' ),
( '石昊', '质量保障工程师' ),
( '白玉龙', '销售经理' ),
( '东方清明', '软件设计工程师' ),
( '祈年', '销售代表' ),
( '宋子奥', '人力资源经理' ),
( '柯蓝', '质量保障工程师' );

使用CASE WHEN和LIKE进行查询

SELECT 姓名, 职位,
CASE
WHEN 职位 LIKE '销售%' THEN '销售岗'
WHEN 职位 LIKE '软件%' THEN '技术岗'
WHEN 职位 LIKE '人力%' THEN '人力岗'
ELSE '其他职位'
END AS 职位类别
FROM 员工;

统计岗位类别:

 

 

 

统计岗位人数:

SELECT
SUM( CASE WHEN 职位 LIKE '%销售%' THEN 1 ELSE 0 END ) AS 销售岗人数,
SUM( CASE WHEN 职位 LIKE '%软件%' THEN 1 ELSE 0 END ) AS 技术岗人数,
SUM( CASE WHEN 职位 LIKE '%人力%' THEN 1 ELSE 0 END ) AS 人力岗人数
FROM
员工;

 

 

关键词:mysql      点击(2)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多mysql相关>>>