mysql icase when
时间: 2023-11-07 22:55:41 浏览: 47
在MySQL中,CASE WHEN语句用于根据给定条件返回不同的值。它的基本语法是:
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
这里的condition1、condition2等是条件表达式,result1、result2等是对应条件为真时的返回值。当条件都不满足时,将返回ELSE后面的值。CASE WHEN语句也可以用于SELECT查询中,根据条件返回不同的列值。
举个例子,假设有一个表名为students,其中包含了学生的姓名和分数。我们想根据分数区间给学生评级,可以使用以下语句:
SELECT name,
CASE WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'D'
END AS grade
FROM students;
这个查询将返回一个包含学生姓名和对应评级的结果集。
相关问题
mysql支持decode函数吗
MySQL并不原生支持decode函数,但是可以使用CASE函数来实现类似的功能。具体实现方式如下:
假设原始的decode函数语句为:
```
decode(expr, search1, result1, search2, result2, ..., default)
```
则可以将其转换为MySQL中的CASE函数:
```
CASE expr
WHEN search1 THEN result1
WHEN search2 THEN result2
...
ELSE default
END
```
例如,将以下db2的语句:
```
select decode(status, 'A', 'active', 'I', 'inactive', 'unknown') as status_desc from my_table;
```
转换为MySQL中的语句:
```
select
case status
when 'A' then 'active'
when 'I' then 'inactive'
else 'unknown'
end as status_desc
from my_table;
```
这样就可以在MySQL中实现和db2中decode函数相同的功能了。
mysql修改字段排序规则
MySQL中修改字段排序规则可以通过以下步骤实现:
1. 查看数据库中所有字段用的排序规则,可以使用以下SQL语句:
SELECT TABLE_SCHEMA '数据库', TABLE_NAME '表', COLUMN_NAME '字段', CHARACTER_SET_NAME '原字符集', COLLATION_NAME '原排序规则', CONCAT( 'ALTER TABLE ', TABLE_NAME, ' MODIFY COLUMN ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci', ( CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END ), ( CASE WHEN COLUMN_COMMENT = '' THEN ' ' ELSE concat( ' COMMENT''', COLUMN_COMMENT, '''' ) END ), ';' ) '修正SQL' FROM information_schema.`COLUMNS` WHERE COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '你的数据库名';
2. 根据需要修改排序规则的字段,使用上一步中生成的修正SQL语句进行修改即可。