sql 的case when 语句

Selectprevent_SeepfromTable_F301(2)Casewhenlength(prevent_Seep)=1then‘无’Whenlength(pr... Select prevent_Seep from Table_F301(2)
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))
这句话哪搓了?他报错
展开
 我来答
hit_lubin
推荐于2018-02-26 · TA获得超过7889个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:2021万
展开全部
case when应该是select或者是where条件的一部分,你这里,case when部分没有在任何一个地方,而且,你这个很明显,应该是select里面的一部分,作为查询的一个结果列。
所以,要在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)
zhishouxin
2011-08-04 · TA获得超过187个赞
知道答主
回答量:75
采纳率:0%
帮助的人:104万
展开全部
两个错误:
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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
憋不出来冷
2018-03-31 · TA获得超过2896个赞
知道小有建树答主
回答量:28
采纳率:100%
帮助的人:4488
展开全部

把括号去掉就好了。

下面是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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呵呵呵呵HHTT
2011-08-04 · TA获得超过382个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:270万
展开全部
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 )prevent_Seep_situation
from Table_F301(2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
豆幻己浩渺
2019-09-28 · TA获得超过1185个赞
知道小有建树答主
回答量:1832
采纳率:100%
帮助的人:8.8万
展开全部
oracle的语法不熟悉,不过我觉得你的语句倒是写的有意思,为什么要to_char函数呢?直接比较不就可以了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式