MySQL中的if和case語句使用總結(jié)_MySQL教程
推薦:Centos5.5中安裝Mysql5.5過程分享這幾天在centos下裝mysql,這里記錄一下安裝的過程,方便以后查閱 Mysql5.5.37安裝需要cmake,5.6版本開始都需要cmake來編譯,5.5以后的版本應(yīng)該也要裝這個(gè)。 安裝cmake 代碼如下: [root@local ~]# wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz [root@
Mysql的if既可以作為表達(dá)式用,也可在存儲(chǔ)過程中作為流程控制語句使用,如下是做為表達(dá)式使用:
IF表達(dá)式
代碼如下:IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值為expr2; 否則返回值則為 expr3。IF() 的返回值為數(shù)字值或字符串值,具體情況視其所在語境而定。
select *,if(sva=1,"男","女") as ssva from taname where sva != ""
作為表達(dá)式的if也可以用CASE when來實(shí)現(xiàn):
select CASE sva WHEN 1 THEN '男' ELSE '女' END as ssva from taname where sva != ''
在第一個(gè)方案的返回結(jié)果中, value=compare-value。而第二個(gè)方案的返回結(jié)果是第一種情況的真實(shí)結(jié)果。如果沒有匹配的結(jié)果值,則返回結(jié)果為ELSE后的結(jié)果,如果沒有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()的返回值是數(shù)字或是字符串,具體情況取決于其所使用的語境。
代碼如下: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) 的默認(rèn)結(jié)果值為兩個(gè)表達(dá)式中更加“通用”的一個(gè),順序?yàn)镾TRING、 REAL或 INTEGER。
IF ELSE 做為流程控制語句使用
if實(shí)現(xiàn)條件判斷,滿足不同條件執(zhí)行不同的操作,這個(gè)我們只要學(xué)編程的都知道if的作用了,下面我們來看看mysql 存儲(chǔ)過程中的if是如何使用的吧。
代碼如下:IF search_condition THEN
statement_list
[ELSEIF search_condition THEN]
statement_list ...
[ELSE
statement_list]
END IF
與PHP中的IF語句類似,當(dāng)IF中條件search_condition成立時(shí),執(zhí)行THEN后的statement_list語句,否則判斷ELSEIF中的條件,成立則執(zhí)行其后的statement_list語句,否則繼續(xù)判斷其他分支。當(dāng)所有分支的條件均不成立時(shí),執(zhí)行ELSE分支。search_condition是一個(gè)條件表達(dá)式,可以由“=、<、<=、>、>=、!=”等條件運(yùn)算符組成,并且可以使用AND、OR、NOT對(duì)多個(gè)表達(dá)式進(jìn)行組合。
例如,建立一個(gè)存儲(chǔ)過程,該存儲(chǔ)過程通過學(xué)生學(xué)號(hào)(student_no)和課程編號(hào)(course_no)查詢其成績(jī)(grade),返回成績(jī)和成績(jī)的等級(jí),成績(jī)大于90分的為A級(jí),小于90分大于等于80分的為B級(jí),小于80分大于等于70分的為C級(jí),依次到E級(jí)。那么,創(chuàng)建存儲(chǔ)過程的代碼如下:
代碼如下: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后需要加上分號(hào)“;”以表示語句結(jié)束,其他語句如CASE、LOOP等也是相同的。
分享:/var/log/pacct文件導(dǎo)致MySQL啟動(dòng)失敗的案例分享毫無預(yù)兆的,MySQL 罷工了。 用 mysql.server 啟動(dòng)腳本啟動(dòng)之后,沒有任何提示信息就結(jié)束,mysqld進(jìn)程自然是沒有起來。 把 mysql.server 里面 $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file /dev/null 21 這句的輸出重定向去掉后運(yùn)行,結(jié)果發(fā)現(xiàn)
- Centos5.5中安裝Mysql5.5過程分享
- /var/log/pacct文件導(dǎo)致MySQL啟動(dòng)失敗的案例分享
- MySQL中在查詢結(jié)果集中得到記錄行號(hào)的方法
- CentOS下php使用127.0.0.1不能連接mysql的解決方法
- 如何配置MySQL主從復(fù)制
- MySQL 備份和恢復(fù)策略詳細(xì)教程
- Apache服務(wù)器下使用 ab 命令進(jìn)行壓力測(cè)試
- MySQL下的NoSQL解決方案HandlerSocket
- MySQL引擎 學(xué)習(xí)筆記
- navicat如何連接mysql?navicat連接mysql詳細(xì)圖文教程
- 如何從Windows命令行啟動(dòng)MySQL
- 你應(yīng)該知道的10個(gè)MySQL客戶啟動(dòng)選項(xiàng)
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- PHP mysqli 增強(qiáng) 批量執(zhí)行sql 語句的實(shí)現(xiàn)代碼
- Mysql存儲(chǔ)引擎InnoDB和Myisam的六大區(qū)別
- PowerDesigner15_Library.zip是什么?
- MySQL多表之間字段的匹配實(shí)現(xiàn)代碼
- mysql的binlog太大太多占用大量磁盤的解決
- 總結(jié)mysql服務(wù)器查詢慢原因
- 基于mysql全文索引的深入理解
- mysql中text與varchar與char的區(qū)別
- 如何通過配置自動(dòng)實(shí)現(xiàn)ValueList中hql語句的整型參數(shù)轉(zhuǎn)換
- Mysql中的find_in_set的使用方法介紹
猜你也喜歡看這些
- SQL Server 2008R2編寫腳本時(shí)智能提示功能丟失的處理方法
- 解析SQL Server索引管理的六大鐵律
- SSB(SQLservice Service Broker) 入門實(shí)例介紹
- SQL 變更數(shù)據(jù)捕獲——跟蹤可變部分
- 實(shí)例演示left join/right join/inner join
- 淺析優(yōu)化SQL語句性能調(diào)整原則
- 揭秘在 SQL Server 數(shù)據(jù)庫開發(fā)中的十大問題
- SQL Server和Oracle的真正區(qū)別
- 解讀VB實(shí)現(xiàn)SQL Server 2000存儲(chǔ)過程調(diào)用
- SQL Server 2008中的新日期數(shù)據(jù)類型
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-MySQL中的if和case語句使用總結(jié)
。