sql 的case when 语句
Case when length(prevent_Seep)=1 then ‘无’
When length(prevent_seep)=2, then ‘有’
When length(prevent_seep)>2 then substring(prevent_seep,2,length(prevent_seep))
这句话哪搓了?他报错 展开
所以,要在from前。
还有,when后边是没有逗号的。
最后,还需要end关键字表示结束。
Select prevent_Seep,
Case when length(prevent_Seep) = 1 then ‘无’
When length(prevent_seep) = 2 then ‘有’
When length(prevent_seep) > 2 then substring(prevent_seep,2,length(prevent_seep))
end as 别名
from Table_F301(2)
1.case when的结果作用和字段一样,你的这部分都写到整个语句外面了,肯定错了。
2.第二个长度等于2的判断,是不能有逗号的。
还有,你的里面有中文的单引号,括号,这个应该是你手抄的笔误吧?
Select prevent_Seep,
Case when length(prevent_Seep) = 1 then ‘无'
When length(prevent_seep) = 2 then ‘有'
When length(prevent_seep) > 2 then substring(prevent_seep,2,length(prevent_seep))
end as prevent_seep_type
from Table_F301(2)
把括号去掉就好了。
下面是case的两种用法,可以看下 :
1. 使用带有 CASE 简单表达式的 SELECT 语句。
在 SELECT 语句中,CASE 简单表达式只能用于等同性检查,而不进行其他比较。下面的示例使用 CASE 表达式更改产品系列类别的显示,以使这些类别更易于理解。
USE AdventureWorks2008R2;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO
2. 使用带有 CASE 搜索表达式的 SELECT 语句
在 SELECT 语句中,CASE 搜索表达式允许根据比较值替换结果集中的值。下面的示例根据产品的价格范围将标价显示为文本注释。
USE AdventureWorks2008R2;
GO
SELECT ProductNumber, Name, 'Price Range' =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber ;
GO
Case
when length(prevent_Seep)=1 then ‘无’
When length(prevent_seep)=2, then ‘有’
When length(prevent_seep)>2 then substring(prevent_seep,2,length(prevent_seep)
end )prevent_Seep_situation
from Table_F301(2)