达梦 case when
时间: 2023-09-07 16:17:50 浏览: 325
达梦数据库的 case when 语句与其他数据库的用法类似,可以根据条件执行不同的操作。具体语法如下:
```
CASE [表达式]
WHEN 值1 THEN 结果1
WHEN 值2 THEN 结果2
...
ELSE 结果n
END
```
其中,表达式可以是任何能够返回值的表达式,值1、值2、...是表达式可能的值,结果1、结果2、...是与值1、值2、...对应的返回结果,ELSE 子句定义当表达式不等于任何已列出的值时返回的结果。
例如,以下语句将根据订单状态返回不同的文本:
```
SELECT order_id,
CASE status
WHEN 'new' THEN '新订单'
WHEN 'processing' THEN '处理中'
WHEN 'completed' THEN '已完成'
ELSE '未知状态'
END AS status_text
FROM orders;
```
注意,达梦数据库中的 case when 语句不支持简写形式,如 MySQL 中的 case 表达式。
相关问题
达梦 case when then 提示非法的参数数据
在达梦数据库中,当使用case when语句对字段进行条件判断时,可能会出现非法的参数数据的提示。这通常是因为在case when语句中包含了函数运算,并且对整个结果集进行了函数运算。在对空数据和非空数据进行不同处理时,可能会导致错误。\[2\]
一个解决方法是在case when语句中对空数据和非空数据分别进行处理。例如,可以使用IS NULL或= ''来判断字段是否为空,然后分别对空数据和非空数据进行不同的处理。这样可以避免非法的参数数据错误。\[3\]
另外,如果在查询视图时使用了or、between...and、and等条件进行条件查询,并且涉及到case when语句,可能会报非法的时间日期类型数据错误。这可能是因为在视图中对时间字段进行了格式化处理,导致无法正确匹配条件。在这种情况下,可以尝试使用其他方式进行条件查询,或者对视图中的时间字段进行调整以适应条件查询的要求。\[1\]
总之,要解决达梦数据库中case when提示非法的参数数据的问题,需要注意对空数据和非空数据进行不同处理,并确保条件查询与视图中字段的格式化处理相匹配。
#### 引用[.reference_title]
- *1* [达梦:使用or 、between...and、 and 条件查询视图报非法的时间日期类型数据](https://blog.csdn.net/Penrosee/article/details/129841063)[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^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [达梦数据库与程序兼容性验证](https://blog.csdn.net/sinat_26192211/article/details/124634646)[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^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
达梦数据库中case when
在达梦数据库中,CASE WHEN语句用于在查询时进行条件判断和结果返回。它的语法如下:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
```
在上面的语法中,可以根据不同的条件进行多个判断,并返回相应的结果。如果没有满足任何条件的情况,可以使用ELSE关键字指定一个默认结果。
以下是一个示例,展示了如何在达梦数据库中使用CASE WHEN语句:
```sql
SELECT
student_name,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS result
FROM
students;
```
上述示例中,根据学生成绩(score)的不同,使用CASE WHEN语句判断并返回相应的等级(result)。