mysql 存储过程case when赋值
时间: 2023-11-11 16:03:10 浏览: 122
MySQL存储过程中可以使用CASE WHEN语句进行条件判断和赋值。其语法如下:
```
CASE case_value
WHEN when_value THEN result_value
[WHEN when_value THEN result_value ...]
[ELSE else_value]
END CASE
```
其中,case_value是需要进行判断的值,when_value是需要匹配的值,result_value是匹配成功后需要赋的值,else_value是当所有when_value都不匹配时的默认值。可以有多个WHEN语句,但只能有一个ELSE语句。
例如,下面的存储过程根据输入的分数返回对应的等级:
```
CREATE PROCEDURE get_grade(IN score INT, OUT grade CHAR(1))
BEGIN
CASE
WHEN score >= 90 THEN SET grade = 'A';
WHEN score >= 80 THEN SET grade = 'B';
WHEN score >= 70 THEN SET grade = 'C';
WHEN score >= 60 THEN SET grade = 'D';
ELSE SET grade = 'E';
END CASE;
END;
```
相关问题
mysql case when赋值
在MySQL中,使用CASE WHEN语句可以根据条件对某个字段进行赋值。在引用的示例中,使用了简单的CASE语句对表中的DLMC字段进行了条件匹配,并根据匹配结果对不同的字段进行赋值。具体的SQL语句如下所示:
```
SELECT QSDWMC,
SUM(CASE WHEN DLMC ='水田' THEN TBMJ ELSE 0 END) AS 水田,
SUM(CASE WHEN DLMC ='旱地' THEN TBMJ ELSE 0 END) AS 旱地,
SUM(CASE WHEN DLMC ='公路用地' THEN TBMJ ELSE 0 END) AS 公路用地
FROM DLTB
```
这个查询语句根据DLMC字段的不同取值,对TBMJ字段进行求和并赋值给不同的别名字段。当DLMC字段的值等于"水田"时,相应的TBMJ值将被累加到"水田"字段中;当DLMC字段的值等于"旱地"时,相应的TBMJ值将被累加到"旱地"字段中;当DLMC字段的值等于"公路用地"时,相应的TBMJ值将被累加到"公路用地"字段中。其他情况下,使用0进行填充。最后,通过使用SUM函数对不同的字段进行求和,可以得到每个类型的土地面积总和。
希望以上解答对您有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [mysql存储过程之case语句用法实例详解](https://blog.csdn.net/weixin_31301993/article/details/114327258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [CASE WHEN 条件赋值](https://blog.csdn.net/oysqtlmy/article/details/123871640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
mysql case when 赋值新列
在MySQL中,可以使用CASE WHEN语句为查询结果赋值新列。根据引用的描述,如果需要根据表中其他几个字段的值判断显示的内容,可以通过以下步骤实现:
1. 执行查询,包括需要判断的字段和其他相关字段。
2. 使用CASE WHEN语句对需要判断的字段进行条件判断,并根据条件返回相应的值。可以使用多个WHEN子句来处理不同的条件情况,也可以使用ELSE子句作为默认值。
3. 可以将CASE WHEN语句作为一个新列的别名,将其添加到SELECT语句中,从而实现为查询结果赋值新列。
举个例子,假设有一个表格名为table_name,其中有字段field1、field2和field3,我们想根据field1的值来赋值一个新的列new_column,可以使用如下的SQL查询语句:
SELECT field1, field2, field3,
CASE WHEN field1 = 'value1' THEN 'a'
WHEN field1 = 'value2' THEN 'b'
ELSE 'c'
END AS new_column
FROM table_name;
在这个例子中,CASE WHEN语句根据field1的值来判断new_column的值,如果field1的值等于'value1',则new_column的值为'a',如果field1的值等于'value2',则new_column的值为'b',否则new_column的值为'c'。通过使用AS关键字,将CASE WHEN语句的结果命名为new_column并将其添加到SELECT语句中。
这样,执行以上的SQL查询语句后,会返回一个结果集,其中包括field1、field2、field3和new_column四个列。new_column列的值根据field1的值进行了判断和赋值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [CASE WHEN 条件赋值](https://blog.csdn.net/oysqtlmy/article/details/123871640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]