1. 程式人生 > >MySQL中的if和case語句使用總結

MySQL中的if和case語句使用總結

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等也是相同的。

相關推薦

MySQLifcase語句使用總結

Mysql的if既可以作為表示式用,也可在儲存過程中作為流程控制語句使用,如下是做為表示式使用: IF表示式 程式碼如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <>

MySQLifcase語句使用總結

順序 大於等於 條件判斷 value 不為 情況 條件 student 實現 Mysql的if既可以作為表達式用,也可在存儲過程中作為流程控制語句使用,如下是做為表達式使用: IF表達式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1

mysqlLOCATECASE WHEN...THEN...ELSE...END結合用法

else case put asdf span 項目 oos bstr col 之前項目中需要寫一個sql,就是查出某個調研詳情中,選A答案,B答案,C答案...F答案的人各有多少人,這個sql也是費了很大的力氣才寫出來,故記下來,方便以後使用。 其中tbl_researc

關於verilogifcase語句不完整產生鎖存器的問題

一、是什麼        鎖存器是一種在非同步時序電路系統中,對輸入訊號電平敏感的單元,用來儲存資訊。一個鎖存器可以儲存1bit的資訊,通常,鎖存器會多個一起出現,如4位鎖存器,8位鎖存器。         鎖存器在資料未鎖存時,輸出端的訊號隨輸入訊號變化,就像訊號通

oracle if case語句的使用

oracle if語句和case語句的使用例子 --------------------if---------------------------- set serveroutput on  declare    v_n1 number(2):=-9; begin   i

MYSQLIF, IFNULL, CASE WHEN的使用

CASE WHEN兩種寫法 1.SELECT CASE WHEN status=1 THEN 'status1' -- 當status=1時,返回值為狀態1 WHEN status=2 THEN 'status2' -- 當status=1時,返回值為狀態1 ELSE '

MySQLifcase用法

Mysql中的if既可以作為表示式使用,也可以在儲存過程中作為流程控制語句使用。 IF表示式 IF(expr1,expr2,expr3) 如果expr1是TRUE(expr1 <> 0 and expr1 <> NULL),則

Shellifcase判斷語句

在程式的執行過程中,總會遇到各種各樣的情況。而作為一個功能相對完善的程式來講,應該可以根據不同的情況來選擇執行不同的程式碼。此時,我們需要用到條件判斷語句。條件判斷語句是一種最簡單的控制語句,該語

if語句case語句用法展示

法律 括號 如果 if...else 是你 acc back please status                               if語句和case語句用法展示                                               

mysql if語句的使用

Mysql的if既可以作為表示式用,也可在儲存過程中作為流程控制語句使用,如下是做為表示式使用: IF(expr1,expr2,expr3) IF表示式 程式碼如下:如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的

mysqlif條件語句

語法為:    IF(expr1,expr2,expr3)         如果 expr1 是TRUE (expr1 <> 0 and&nbs

shell 的for迴圈while迴圈case語句

迴圈語句1)for 迴圈 第一種語法格式:for((初始化變數值;結束迴圈條件;迴圈控制語句))do迴圈體done eg. #!/bin/sh sum=0 for ((i=0;i<10;i++)

hiveifcoalesce 去除null值,case when

ref http://blog.csdn.net/mtj66/article/details/52629876 ###################################### if usage select * from (select *,if (b.nam

mysqlifnullhiveif函式的轉換

先說說,在mysql中,ifnull函式的用法,其表示式如下:IFNULL(expr1,expr2)如果 expr1 不是 NULL,IFNULL() 返回 expr1,否則它返回 expr2。IFNULL()返回一個數字或字串值,取決於它被使用的上下文環境。舉個應用場景,比

MySQL的查詢約束語句主鍵、聯合主鍵、外來鍵

查詢語句 過濾空值 過濾空值 如果該值是空的 就當做0來處理 SELECT IFNULL(欄位名,0) FROM 表名 聚合函式 排序 利用ORD

PHPincluderequire語句的區別

warning mar 處理 生成 區別 war 插入 php 通過 通過 include 或 require 語句,可以將 PHP 文件的內容插入另一個 PHP 文件(在服務器執行它之前)。 include 和 require 語句是相同的,除了錯誤處理方面:

mysqlreplicate_wild_do_tablereplicate_do_db區別

lan rep cati mil 多人 pan think lte 避免 使用replicate_do_db和replicate_ignore_db時有一個隱患,跨庫更新時會出錯。 如在Master(主)服務器上設置 replicate_do_db=test(my.conf

MySQLTIMESTAMPDIFFTIMESTAMPADD函數的用法

用法 int blog 函數 mysq second row logs tail TIMESTAMPDIFF 語法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。 說明: 返回日期或日期時間表達式date

mysqlvarcharchar區別(思維導圖整理)

var 但是 系統 mysql 由於 varchar .html nbsp 了解   由於mysql一直是我的弱項(其實各方面我都是很弱的),所以最近在看msyql,正好看到varchar和char區別,所以整理一下,便於以後遺忘。      0.0圖片已經說明一切,但是系

mysql deletetrncate區別

重新 sql delet use 它的 刪除 掃描 進行 from mysql中刪除表記錄delete from和truncate table的用法區別: MySQL中有兩種刪除表中記錄的方法:(1)delete from語句,(2)truncate table語句。 d