sql 的case when 语句

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))
这句话哪搓了?他报错
最新回答
风中的歌声

2022-07-08 03:45:24

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)
天空天然蓝

2020-10-27 00:41:25

两个错误:
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)
淡忘呐情。

2020-09-25 08:08:49

把括号去掉就好了。

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

一丁温暖

2023-11-22 01:14:40

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)
残暴的安妮

2022-03-26 06:02:52

oracle的语法不熟悉,不过我觉得你的语句倒是写的有意思,为什么要to_char函数呢?直接比较不就可以了?
收起 2条折叠回答