上面sql写的有问题吗
时间: 2024-02-19 15:03:31 浏览: 63
这段SQL语句存在一些语法错误和逻辑问题:
1. 当使用CASE语句时,应该以END结束整个语句块,而不是在CASE分支中单独使用END。
2. 当使用多个WHEN分支时,应该使用逻辑运算符连接它们,比如使用OR或者AND等。
3. 在将字符串转换为整数类型时,如果字符串中包含非数字字符,则会引发错误。
4. 在CASE语句中,应该为每个分支指定一个返回值,而不是单独使用as关键字。
5. 对于不符合任何条件的情况,应该使用ELSE分支来指定默认返回值。
改正后的SQL语句如下:
```sql
SELECT
CASE
WHEN s.carton_num LIKE 'CICU%' THEN CAST(SUBSTRING(s.carton_num, 5, 6) AS INT)
WHEN s.carton_num LIKE 'NCSE%' THEN CAST(SUBSTRING(s.carton_num, 8, 5) AS INT)
ELSE '无'
END AS xhd
FROM
table_name s
```
这个SQL语句会根据s.carton_num的值进行判断:
- 如果s.carton_num以'CICU'开头,则取s.carton_num的第5到第10个字符,并将这个字符串转换为整数类型,赋值给xhd变量。
- 如果s.carton_num以'NCSE'开头,则取s.carton_num的第8到第12个字符,并将这个字符串转换为整数类型,赋值给xhd变量。
- 否则,返回'无'。
该语句使用了LIKE运算符来模糊匹配字符串,并使用CAST函数将字符串转换为整数类型。同时,使用了FROM子句来指定查询的数据表。
阅读全文