问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在oracle sql语句里有没有if...else...的用法,请各位大侠给个例子看看...

发布网友 发布时间:2022-04-25 14:46

我来回答

12个回答

热心网友 时间:2022-04-08 19:44

oracle 中if ..else 可以再pl/sql 中使用,
如果是要在SQL语句中达到这种效果可以用case when ... then ...else ..end;
mysql数据库中CASE WHEN语句。

case when语句,用于计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。

语法
简单 CASE 函数:

复制代码 代码如下:

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END

CASE 搜索函数:

复制代码 代码如下:

CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END

参数
input_expression

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft? SQL Server? 表达式。

WHEN when_expression

使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL
Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。
result expression 是任意有效的 SQL Server 表达式。

ELSE else_result_expression

当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL
值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression
和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

WHEN Boolean_expression

使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

结果类型

从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

结果值

简单 CASE 函数:
计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。

返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。

如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
CASE 搜索函数:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。

返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。

如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

下面分享一些mysql case when语句的例子。

A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其它比较。

例子,使用 CASE 函数更改图书分类显示。

复制代码 代码如下:

USE pubs
GO
SELECT Category =
CASE type
WHEN 'popular_comp' THEN 'Popular Computing'
WHEN 'mod_cook' THEN 'Modern Cooking'
WHEN 'business' THEN 'Business'
WHEN 'psychology' THEN 'Psychology'
WHEN 'trad_cook' THEN 'Traditional Cooking'
ELSE 'Not yet categorized'
END,
CAST(title AS varchar(25)) AS 'Shortened Title',
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price
COMPUTE AVG(price) BY type
GO

注释,后来我试了一下不让用category=。

我使用的代码为:

复制代码 代码如下:

SELECT
case gender
WHEN 1 THEN 'NAN'
WHEN 0 THEN 'NV'
end as gender
FROM
t_swidy_day_nutrient

结果集:

Category Shortened Title Price
------------------- ------------------------- --------------------------
Business You Can Combat Computer S 2.99
Business Cooking with Computers: S 11.95
Business The Busy Executive's Data 19.99
Business Straight Talk About Compu 19.99

avg
==========================
13.73

Category Shortened Title Price
------------------- ------------------------- --------------------------
Modern Cooking The Gourmet Microwave 2.99
Modern Cooking Silicon Valley Gastronomi 19.99

avg
==========================
11.49

Category Shortened Title Price
------------------- ------------------------- --------------------------
Popular Computing Secrets of Silicon Valley 20.00
Popular Computing But Is It User Friendly? 22.95

avg
==========================
21.48

Category Shortened Title Price
------------------- ------------------------- --------------------------
Psychology Life Without Fear 7.00
Psychology Emotional Security: A New 7.99
Psychology Is Anger the Enemy? 10.95
Psychology Prolonged Data Deprivatio 19.99
Psychology Computer Phobic AND Non-P 21.59

avg
==========================
13.50

Category Shortened Title Price
------------------- ------------------------- --------------------------
Traditional Cooking Fifty Years in Buckingham 11.95
Traditional Cooking Sushi, Anyone? 14.99
Traditional Cooking Onions, Leeks, and Garlic 20.95

avg
==========================
15.96

(21 row(s) affected)

B. 使用带有简单 CASE 函数和 CASE 搜索函数的

SELECT 语句
在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。

例子:根据图书的价格范围将价格(money 列)显示为文本注释。

复制代码 代码如下:

USE pubs
GO
SELECT 'Price Category' =
CASE
WHEN price IS NULL THEN 'Not yet priced'
WHEN price < 10 THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END,
CAST(title AS varchar(20)) AS 'Shortened Title'
FROM titles
ORDER BY price
GO

结果集:

Price Category Shortened Title
--------------------- --------------------
Not yet priced Net Etiquette
Not yet priced The Psychology of Co
Very Reasonable Title The Gourmet Microwav
Very Reasonable Title You Can Combat Compu
Very Reasonable Title Life Without Fear
Very Reasonable Title Emotional Security:
Coffee Table Title Is Anger the Enemy?
Coffee Table Title Cooking with Compute
Coffee Table Title Fifty Years in Bucki
Coffee Table Title Sushi, Anyone?
Coffee Table Title Prolonged Data Depri
Coffee Table Title Silicon Valley Gastr
Coffee Table Title Straight Talk About
Coffee Table Title The Busy Executive's
Expensive book! Secrets of Silicon V
Expensive book! Onions, Leeks, and G
Expensive book! Computer Phobic And
Expensive book! But Is It User Frien

(18 row(s) affected)

C. 使用带有 SUBSTRING 和 SELECT 的 CASE 函数

例子,使用 CASE 和 THEN 生成一个有关作者、图书标识号和每个作者所著图书类型的列表。

首先,来看下 CASE 的语法。在一般的 SELECT 中,其语法如下:

复制代码 代码如下:

SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END

以上代码,需要用具体的参数代替尖括号中的内容。

甚至还可以组合这些选项,添加一个 ORDER BY 子句,例如:

复制代码 代码如下:

USE pubs
GO
SELECT
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END AS Range,
Title
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
ORDER BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
GO

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。

稍加深入,还可以得到以前认为不可能得到的分组排序结果集。
使用CASE WHEN进行字符串替换处理

在SELECT查询中使用CASE WHEN

复制代码 代码如下:

/*
mysql> SELECT Name, RatingID AS Rating,
-> CASE RatingID
-> WHEN 'R' THEN 'Under 17 requires an alt.'
-> WHEN 'X' THEN 'No one 17 and under.'
-> WHEN 'NR' THEN 'Use discretion when renting.'
-> ELSE 'OK to rent to minors.'
-> END AS Policy
-> FROM DVDs
-> ORDER BY Name;
+-----------+--------+------------------------------+
| Name | Rating | Policy |
+-----------+--------+------------------------------+
| Africa | PG | OK to rent to minors. |
| Amadeus | PG | OK to rent to minors. |
| Christmas | NR | Use discretion when renting. |
| Doc | G | OK to rent to minors. |
| Falcon | NR | Use discretion when renting. |
| Mash | R | Under 17 requires an alt. |
| Show | NR | Use discretion when renting. |
| View | NR | Use discretion when renting. |
+-----------+--------+------------------------------+
8 rows in set (0.01 sec)
*/
Drop table DVDs;
CREATE TABLE DVDs (
ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(60) NOT NULL,
NumDisks TINYINT NOT NULL DEFAULT 1,
RatingID VARCHAR(4) NOT NULL,
StatID CHAR(3) NOT NULL
)
ENGINE=INNODB;
INSERT INTO DVDs (Name, NumDisks, RatingID, StatID)
VALUES ('Christmas', 1, 'NR', 's1'),
('Doc', 1, 'G', 's2'),
('Africa', 1, 'PG', 's1'),
('Falcon', 1, 'NR', 's2'),
('Amadeus', 1, 'PG', 's2'),
('Show', 2, 'NR', 's2'),
('View', 1, 'NR', 's1'),
('Mash', 2, 'R', 's2');
SELECT Name, RatingID AS Rating,
CASE RatingID
WHEN 'R' THEN 'Under 17 requires an alt.'
WHEN 'X' THEN 'No one 17 and under.'
WHEN 'NR' THEN 'Use discretion when renting.'
ELSE 'OK to rent to minors.'
END AS Policy
FROM DVDs
ORDER BY Name;

热心网友 时间:2022-04-08 21:02

oracel数据库中,sql语句中没有if else

可以使用 decode() 或者 case when then else end

select decode('1','1','相等','不相等') from al;
select case when '1'='2' then '相等' else '不相等' end from al;

热心网友 时间:2022-04-08 22:36

SQL里的判断用case when。
例如:
select proct_id,proct_type_id,
(case
when proct_type_id=1 then 'Book'
when proct_type_id=2 then 'Video'
when proct_type_id=3 then 'DVD'
when proct_type_id=4 then 'CD'
else 'Magazine'
end) as type
from procts ;

热心网友 时间:2022-04-09 00:28

oracle 的sql里面是没有直接的if else 语句的,可以用decode函数或者case when简单的代替。
比如 selcect decode(表1的列1,等于a,结果a,等于b,结果b,其他结果c) from 表1。

case when也可以。

SELECT SEX,
( CASE SEX
WHEN 'F'
THEN '男'
WHEN 'M'
THEN '女'
ELSE ' '
END
) 性别
FROM table

真正的if else 在oracle的pl/sql里面,就和其它的程序判断一样,也有变量什么的

热心网友 时间:2022-04-09 02:36

没有if else的用法。
一般来说,要实现if else的功能,可以使用下面3种方式实现:
1、可以使用case when 条件 then 结果1 else 结果2 end;
2、使用Decode()函数。
3、可以使用function来返回值,在function和procere中可以使用if ..... end if;

热心网友 时间:2022-04-09 05:00

CASE when ......... then ..............else ...................... end

有这样的结构

热心网友 时间:2022-04-09 07:42

sql 语句我只用过 when ... then ... else ... ,你说的if else 倒是在存储过程中常用 if .... then .... else....

热心网友 时间:2022-04-09 10:40

case when 1=1 then 1 else 2 end
case when 1=1 then 1 when 1<> 1 then 2 else 0 end

热心网友 时间:2022-04-09 13:54

在oracle中,没有完全的if...else的用法,在游标中,友if..end if的用法
if emp>500 then insert into。。values() end if
if emp>1000 then intsert into...

热心网友 时间:2022-04-09 17:26

没有!!!!

热心网友 时间:2022-04-09 21:14

共有3中类型,简单分支、二重分支和多重分支。
语法:
IF condition THEN
statements;
[ELSEIF condition THEN
statements;
]
[ELSE
statements;
]
END IF;

示例:
DECLARE
v_empno scott.emp.empno%TYPE;
v_job scott.emp.job%TYPE;

BEGIN
SELECT t.empno,t.job INTO v_empno,v_job FROM scott.emp t WHERE t.empno=&empno;
IF v_job='CLERK' THEN
UPDATE scott.emp t SET t.sal=t.sal*1.1 WHERE t.empno=v_empno;
ELSE
UPDATE scott.emp t SET t.sal=t.sal*1.3 WHERE t.empno=v_empno;
END IF;
END;
/追问谢谢,但我要的是sql的 不是pl/sql的语句!

热心网友 时间:2022-04-10 01:18

请使用CASE when 条件1 then 结果1
when 条件2 then 结果2
ELSE 结果3 end;结构
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孕妇用微波炉要离多远合适 孕妇使用微波炉的注意事项 微波炉热出来的东西有辐射吗-微波炉辐射范围是几米 当在使用微波炉的时候是不是要离远点?是不是对身体有害? 需 恶魔的小宠儿全集及类似言情小说,谢谢 英雄联盟手游168龙魂水晶免费兑换码-英雄联盟手游168龙魂水晶免费兑换码... 什么是引导区 取得工程技术或工程经济专业中级职务,并任职满3年.3年指的是取得中级... ...全国注册监理工程师考试,并且职称要求3年如何理解 反脸无情的近义词 重庆市第一中学学生成果 oracle if 后可以给多个条件不? oracle SQL 当中的IF函数是什么 红茶能和茉莉花苞一起泡吗? 有没有喝过茉莉红茶的朋友说一下谁家的比较好喝? 喝了红茶还可以喝茉莉茶的吗 茉莉红茶怎么做 红茶,绿茶,茉莉花茶的功效和区别是哪些 红茶和茉莉花茶是怎样种植? 红茶和茉莉花茶可以合着喝吗? clipboard在苹果手机上失效。安卓可以 。求大神解救 喝茉莉花茶好还是红茶好?谁知道啊! 喝茉莉花茶好还是红茶好? 梦见自己家水缸破了个角而且里面水很脏 茉莉花可以和红茶搭配着喝吗? 梦见自己把水缸打破,水全流到粪坑里 茉莉红茶是什么茶 当你对朋友好时,他们会铭记你的恩情还是利用你的感情? 上海好时股权投资基金管理有限公司怎么样? 如何利用成交量卖股票 孕妇梦见自己生双眼皮的男孩准不准 oracle哪个函数等价于mysql if函数 oracle中是否具有“判定字符串是否符合日期格式”的函数,类似于sqlserve... oracle 中如何创建一个函数用来判断输入的数字正负零,并且在一个名为c... oracle 中如何调用函数 ORACLE函数中的nullif函数表示什么意思? oracle写一个函数!!! oracle 中判断字符有没有在指定字符中的函数要怎么样写 Oracle自定义函数编译不通过,条件语句应该怎么写? ORACLE用什么函数能判断列中值大小并输出一个固定值 韭菜馅饺子蒸多长时间 韭菜馅蒸饺上锅蒸多久,开水 韭菜饺子蒸多久熟 鸡蛋韭菜蒸饺 蒸多长时间较好 我的苹果6连不上wifi和蓝牙,按钮变浅还画了一个叉,怎么解决啊? 苹果手机无线网络上有个横杠怎么回事,能消除吗 我的苹果6 wifi功能出现问题,该如何解决? 苹果六WiFi按键打不开是怎么回事。 苹果6splus wifi开不开,按钮符号没反应,怎么回事啊? 苹果手机wifi按钮打不开 苹果6手机wifi开关按钮、蓝牙按钮、退出登陆按钮、恢复设置按钮没反应...