if陳述句做為運算式使用,語法格式如下:
IF(expr1,expr2,expr3)
說明:
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的回傳值為expr2; 否則回傳值則為 expr3,IF() 的回傳值為數字值或字串值,具體情況視其所在語境而定,
例子:
select *,if(age=1,"男","女") as ages from user;
當然如果作為運算式的話,if也可以用CASE when來實作的:
/* 下面這個將輸出:男 */
SELECT CASE 1
WHEN 1 THEN '男'
WHEN 2 THEN '女'
ELSE '未知'
END
as ages
/* 下面這個將輸出:女 */
SELECT
CASE 2
WHEN 1 THEN '男'
WHEN 2 THEN '女'
ELSE '未知'
END
as ages
/* 下面這個將輸出:未知 */
SELECT
CASE 3
WHEN 1 THEN '男'
WHEN 2 THEN '女'
ELSE '未知'
END
as ages
/* 當然還有一種寫法 輸出:未知 */
SELECT
CASE
WHEN 3=1 THEN '男'
WHEN 3=2 THEN '女'
ELSE '未知'
END
as ages
SELECT
CASE
WHEN 3=1 THEN '男'
WHEN 3=2 THEN '女'
WHEN (3=4 || 3!=null) THEN '測驗'
ELSE '未知'
END
as ages
從上面的例子我們可以看出得很明白了,case后面的值=when后臺的值,然后就會輸出when后面跟的then后的值,如果都不等行的話,就輸出else后的值,
IF...ELSE...做為流程控制陳述句使用,語法格式如下:
IF search_condition THEN
statement_list
[ELSEIF search_condition THEN]
statement_list ...
[ELSE
statement_list]
END IF
說明:
當IF中條件search_condition成立時,執行THEN后的statement_list陳述句、
否則判斷ELSEIF中的條件成立時,執行其后的statement_list陳述句、
否則繼續判斷其他分支,
當所有分支的條件均不成立時,執行ELSE分支,
search_condition是一個條件運算式,可以由“=、<、<=、>、>=、!=”等條件運算子組成,并且可以使用AND、OR、NOT對多個運算式進行組合,
例子:
建立一個存盤程序,該存盤程序通過學生學號(student_no)和課程編號(course_no)查詢其成績(grade),回傳成績和成績的等級,成績大于90分的為A級,小于90分大于等于80分的為B級,小于80分大于等于70分的為C級,依次到E級
create procedure dbname.proc_getGrade
(stu_no varchar(20),cour_no varchar(10))
BEGIN
declare stu_grade float;
select grade into stu_grade from grade where student_no=stu_no and course_no=cour_no;
if stu_grade>=90 then
select stu_grade,'A';
elseif stu_grade<90 and stu_grade>=80 then
select stu_grade,'B';
elseif stu_grade<80 and stu_grade>=70 then
select stu_grade,'C';
elseif stu_grade70 and stu_grade>=60 then
select stu_grade,'D';
else
select stu_grade,'E';
end if;
END
注意:IF作為一條陳述句,在END IF后需要加上分號“;”以表示陳述句結束,其他陳述句如CASE、LOOP等也是相同的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/242446.html
標籤:其他
上一篇:Oracle資料庫實驗
下一篇:SQL陳述句習題總練習
