標籤:condition div title body creat 不為 url 運算式 sel
大神說:在sql中,能用if else 就不用case when
下面來看看,具體為什麼,沒有搞清楚,如果有大神知道的提供下資料:
Mysql的if既可以作為運算式用,也可在預存程序中作為流程式控制制語句使用,如下是做為運算式使用:
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 != ""
作為運算式的if也可以用CASE when來實現:
複製代碼代碼如下:
select CASE sva WHEN 1 THEN ‘男‘ ELSE ‘女‘ END as ssva from taname where sva != ‘‘
在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為ELSE後的結果,如果沒有ELSE 部分,則傳回值為 NULL。
例如:
複製代碼代碼如下:
SELECT CASE 1 WHEN 1 THEN ‘one‘
WHEN 2 THEN ‘two‘
ELSE ‘more‘ END
as testCol
將輸出one
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 ELSE 做為流程式控制制語句使用
if實現條件判斷,滿足不同條件執行不同的操作,這個我們只要學編程的都知道if的作用了,下面我們來看看mysql 預存程序中的if是如何使用的吧。
複製代碼代碼如下:
IF search_condition THEN
statement_list
[ELSEIF search_condition THEN]
statement_list ...
[ELSE
statement_list]
END IF
與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>=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等也是相同的。
sql if else 語句
IF ELSE 語句
IF ELSE 是最基本的編程語句結構之一幾乎每一種程式設計語言都支援這種結構而
它在用於對從資料庫返回的資料進行檢查是非常有用的TRANSACT-SQL 使用IF ELSE
的例子如下
文法
if (condition)
begin
(statement block)
end
else if (condition)
begin
statement block)
end
else
begin
(statement block)
end
注意當所指定的條件為真時對應的BEGIN END 語句塊就會被執行同時
你也應該注意將每一個語句縮排一定量的空格是一種很好的編程習慣它可以極大的提向
你的程式的易讀性和由於易讀性不好所導致的錯誤
mysql中的case when 與if else