sql 的case when 语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))
这句话哪搓了?他报错

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)
参考技术A 两个错误:
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)
参考技术B

把括号去掉就好了。

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

参考技术C 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)
参考技术D oracle的语法不熟悉,不过我觉得你的语句倒是写的有意思,为什么要to_char函数呢?直接比较不就可以了?

SQL语句中case,when,then的用法

用法如下:

复制代码

SELECT

s.s_id,

s.s_name,

s.s_sex,

CASE

WHENs.s_sex='1'THEN'男'

WHENs.s_sex='2'THEN'女'

ELSE'其他'

ENDassex,

s.s_age,

s.class_id

FROM

t_b_students

WHERE

1=1

这两个结果是一样的:

需要注意的一点是,Case函数只返回第一个限定值,其余的Case将被自动忽略。

扩展资料:

Case有两种格式:简单函数和Case搜索函数。

简单的例子功能:

CASEsex

WHEN‘1’THEN‘男’

WHEN‘0’THEN‘女’

ELSE‘其他’END

Case搜索函数:

CASEWHENsex=‘1’THEN‘男’

WHENsex=‘0’THEN‘女’

ELSE‘其他’END

显然简单的Case函数天生简洁,但它们只适用于这种单字段单值比较,而Case搜索函数具有适用于所有比较用例的优势。

另一个需要注意的问题是,在Case函数满足了某个条件之后,其余的条件将被自动忽略,这样即使满足了多个条件,在执行过程中也只能识别第一个条件。

当使用CASEWHEN时,您可以将其视为没有字段名的字段,字段值是有条件的,并且在需要使用字段名时可以使用as来定义别名。

参考技术A select case when 字段名 is null then '录入' else 字段名 end as 别名 from 表名 where 条件

别名要不要都行。 语法没多少用的!要有一个整段sql例子!你就懂了
参考技术B case 表达式
when 值1 then 结果1
when 值2 then 结果2
else 结果3
也有另一种形式
case
when 表达式1 then 结果1
when 表达式2 then 结果2
else 结果3

以上是关于sql 的case when 语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句中case,when,then的用法

case when用法sql

sql2005中的case when语句怎么用啊?请写出一个常见的例子

SQL查询语句SELECT中带有case when嵌套子查询判断的问题

sql语句借助case when实现自动拼装where条件

SQL语句中case,when,then的用法