mysql查询判断函数,类似decode
mysql中没有decode函数,如果使用的话,会报如下错误:Error Code: 1305. FUNCTION stockdb.decode does not exist
如果要实现像 Oracle 数据库那样原生的 DECODE 函数,可以通过以下几种方式来实现类似 DECODE 函数的功能。
-- 创建示例表
CREATE TABLE employees (
id INT,
name VARCHAR(20) ,
department VARCHAR(50)
);
-- 插入示例数据
INSERT INTO employees (id, name,department) VALUES
(1, '张三','HR'),
(2, '李四','IT'),
(3, '王五','Finance');
select a.name,decode(a.department,'HR','人力资源部','IT','信息技术部','Finance','财务部','其他') as department_ch from employees a;
-- 使用 CASE 表达式
-- CASE 表达式是实现类似 DECODE 功能的最常用方式,它有两种形式:简单 CASE 表达式和搜索 CASE 表达式。
-- 示例1:使用简单 CASE 表达式模拟 DECODE 功能
SELECT
id,
name,
department,
CASE department
WHEN 'HR' THEN '人力资源部'
WHEN 'IT' THEN '信息技术部'
WHEN 'Finance' THEN '财务部'
ELSE '其他'
END AS department_ch
FROM
employees;
-- 示例2:搜索 CASE 表达式示例
SELECT
id,
department,
CASE
WHEN department = 'HR' THEN '人力资源部'
WHEN department = 'IT' THEN '信息技术部'
WHEN department = 'Finance' THEN '财务部'
ELSE '其他部门'
END AS department_ch
FROM
employees;
-- 示例三:使用多个 IF 函数嵌套
SELECT
id,
department,
IF(department = 'HR', '人力资源部',
IF(department = 'IT', '信息技术部',
IF(department = 'Finance', '财务部', '其他部门')
)
) AS department_ch
FROM
employees;