mysql 儲存過程(二) 邏輯判斷語句

2022-07-24 09:57:12 字數 2592 閱讀 6774

一,if語句:

if(expr1,expr2,expr3)

如果 expr1 是true (expr1 <> 0 and expr1 <> null),則 if()的返回值為expr2; 否則返回值則為 expr3。if() 的返回值為數字值或字串值,具體情況視其所在語境而定。

select *,if(sva=1,"男","女") as ssva from taname where sva != ""

ifnull(expr1,expr2)

假如expr1 不為 null,則 ifnull() 的返回值為 expr1; 否則其返回值為 expr2。ifnull()的返回值是數字或是字串,具體情況取決於其所使用的語境。

mysql> select ifnull(1,0);

-> 1

mysql> select ifnull(null,10);

-> 10

mysql> select ifnull(1/0,10);

-> 10

mysql> select ifnull(1/0,'yes');

-> 'yes'

ifnull(expr1,expr2)的預設結果值為兩個表示式中更加「通用」的乙個,順序為string、 real或 integer。

if實現條件判斷,滿足不同條件執行不同的操作,這個我們只要學程式設計的都知道if的作用了,下面我們來看看mysql 儲存過程中的if是如何使用的吧。

if

search_condition then

statement_list

[elseif

search_condition then]

statement_list ...[

else

statement_list]

endif

與php中的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>=90then

select stu_grade,'a';

elseif stu_grade<90 and stu_grade>=80then

select stu_grade,'b';

elseif stu_grade<80 and stu_grade>=70then

select stu_grade,'c';

elseif stu_grade70 and stu_grade>=60then

select stu_grade,'d';

else

select stu_grade,'e';

endif

; end

注意:if作為一條語句,在end if後需要加上分號「;」以表示語句結束,其他語句如case、loop等也是相同的。

二,case語句:

查詢語句:

select case sva when 1 then '男' else '女' end

as ssva from taname where sva != ''

修改語句:

編寫一條update語句實現商品漲價,具體規則如下

1、99元以內,提價20%

2、100-999元之間,提價10%

3、1000-1999之間,提價5%

4、其他提價2%

update goods

set price =(

case

when price between 0 and 99 then price * 1.2when price between 100 and 999 then price * 1.1when price between 1000 and 1999 then price * 1.05when price > 1999 then price * 1.02

end);

select *from goods;

MySql儲存過程 5 邏輯判斷,條件控制

同編寫程式類似,儲存過程中也有對應的條件判斷,功能類似於if switch。在mysql裡面對應的是if和case 1 if判斷 if判斷的格式是這樣的 if expression then commands elseif expression then commands else commands...

JS教程 邏輯分支(判斷語句)

語法 if 判斷條件 else 條件為真,執行if,條件為假,執行else if 只需要布林值 所以if判斷時,會把 內所有資料型別先隱式轉換成布林型 if 中,非零數字都會轉成true,非空字元都會轉成true 語法 switch switch 內,不會做判斷,在case身上判斷這個值是否符合 判...

判斷語句 讓IF判斷語句如虎添翼邏輯運算子

玩遊戲的童鞋都知道,有一類英雄,他能給其他角色加血 擋刀 加防禦 加輸出 除了輸出之外,啥都會幹,這類英雄就是輔助。而在vba中,邏輯運算子就是if語句的輔助。and 與 or 或 not 非 下面是邏輯運算子的簡要的功能 滿足多個條件 and運算子在工作中,當我們需要滿足多個條件,才能實現乙個功能...