mysql中的函數編程_MySQL

12.2.?控制流程函數

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為ELSE后的結果,如果沒有ELSE部分,則返回值為NULL。

mysql> SELECT CASE 1 WHEN 1 THEN 'one'

->???? WHEN 2 THEN 'two' ELSE 'more' END;

-> 'one'

mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

-> 'true'

mysql> SELECT CASE BINARY 'B'

->???? WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;

-> NULL

一個CASE表達式的默認返回值類型是任何返回值的相容集合類型,但具體情況視其所在語境而定。如果用在字符串語境中,則返回結果味字符串。如果用在數字語境中,則返回結果為十進制值、實值或整數值。

IF(expr1,expr2,expr3)

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

mysql> SELECT IF(1>2,2,3);

-> 3

mysql> SELECT IF(1<2,'yes ','no');

-> 'yes'

mysql> SELECT IF(STRCMP('test','test1'),'no','yes');

-> 'no'

如果expr2或expr3中只有一個明確是NULL,則IF()函數的結果類型 為非NULL表達式的結果類型。

expr1作為一個整數值進行計算,就是說,假如你正在驗證浮點值或字符串值, 那么應該使用比較運算進行檢驗。

mysql> SELECT IF(0.1,1,0);

-> 0

mysql> SELECT IF(0.1<>0,1,0);

-> 1

在所示的第一個例子中,IF(0.1)的返回值為0,原因是0.1被轉化為整數值,從而引起一個對IF(0)的檢驗。這或許不是你想要的情況。在第二個例子中,比較檢驗了原始浮點值,目的是為了了解是否其為非零值。比較結果使用整數。

IF() (這一點在其被儲存到臨時表時很重要)的默認返回值類型按照以下方式計算:

表達式

返回值

expr2或expr3返回值為一個字符串。

字符串

expr2或expr3返回值為一個浮點值。

浮點

expr2或 expr3 返回值為一個整數。

整數

假如expr2和expr3 都是字符串,且其中任何一個字符串區分大小寫,則返回結果是區分大小寫。

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。假設一個基于表達式的表的情況,或MySQL必須在內存儲器中儲存一個臨時表中IFNULL()的返回值:

CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;

在這個例子中,測試列的類型為CHAR(4)。

NULLIF(expr1,expr2)

如果expr1= expr2 成立,那么返回值為NULL,否則返回值為 expr1。這和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

mysql> SELECT NULLIF(1,1);

-> NULL

mysql> SELECT NULLIF(1,2);

-> 1

注意,如果參數不相等,則MySQL兩次求得的值為expr1。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532895.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532895.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532895.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python畫窗口_pyqt中圖案如何畫在子窗口上

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓基本思路是從QWidget派生出一個類重寫paintEvent&#xff0c;在里面畫圖。UI部分代碼是這樣的class Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(1008, 693)self.widget QtWidgets…

twisted mysql_Twisted MySQL adbapi返回字典

有沒有辦法把adbapi查詢的字典結果返回到MySQL&#xff1f;在[name: Bob, phone_number: 9123 4567]默認返回元組。在^{pr2}$對于簡單的Python&MySQL&#xff0c;我們可以使用MySQLdb.cursors.dictcursors。但是如何與扭曲的adbapi一起使用呢UPD:我解決了&#xff0c;但我認…

win 10 java 安裝_win10---Java安裝及環境變量配置

一、Java安裝給出的下載地址已經是1.8.0及以上的版本&#xff0c;只需要進去根據操作系統位數選擇所對應的包即可&#xff0c;我的是Windows x64&#xff0c;所以我選擇的是第二個。注意??&#xff1a;下載jdk時&#xff0c;需要登錄Oracle賬戶&#xff0c;如果沒有&#xff…

java 生成bat_java實現生成windows可執行的批處理文件(.bat)

/*** 下載壓縮包**paramid 商戶id*paramrequest*paramresponse*returnvoid*authorchen.bing* Date 2019/11/4 17:35*/RequestMapping(value "downloadzip")public voiddownloadzip(String id, HttpServletRequest request, HttpServletResponse response) {if(String…

java 代碼塊的作用_4種Java代碼塊的作用講解

4種Java代碼塊的作用講解時間&#xff1a;2017-06-28 來源&#xff1a;華清遠見JAVA學院今天華清Java學院小編要和大家分享的是Java代碼塊的作用&#xff0c;代碼塊是一種常見的代碼形式&#xff0c;他用大括號“{&#xff5d;”將多行代碼封裝在一起&#xff0c;形成一個獨…

java properties用法_java中Properties文件加載和使用方法

一.Properties簡介Properties 類繼承自HashTable&#xff0c;提供的方法很像Map的實現類HashMap。它在 Java 編程的早期就有了&#xff0c;并且幾乎沒有什么變化。J2SE 的 Tiger 版本增強了這個類&#xff0c;不僅可以用它在單獨一行中指定用等號分隔的多個鍵-值對(其中鍵和值是…

java ip歸屬地查詢_JAVA版IP地址查詢調用示例

package cn.juhe;import net.sf.json.JSONObject;import org.springframework.web.client.RestTemplate;/*** ip地址查詢Java版本demo*/public class IpDemo {//請求的接口地址public static final String REQUEST_URL "http://apis.juhe.cn/ip/ipNew?ip%s&key%s&q…

java 多個異常處理_Java 多個異常共享同一個異常處理器的方法

傳統的異常處理我們先來看下&#xff0c;傳統的異常處理方式&#xff1a;// not share exception handlerint[] intArray new int[3];try {for (int i 0; i < intArray.length; i) {intArray[i] i;System.out.println("intArray[" i "] " intArr…

java基礎知識點_JAVA基礎知識

1.注釋&#xff0c;關鍵字&#xff0c;標識符1.注釋(1)注釋&#xff1a;解釋說明程序的而文字。(2)注釋的分類&#xff1a;單行注釋 格式&#xff1a; //注釋的文字多行注釋 格式&#xff1a;/*注釋的文字*/文檔注釋 格式&#xff1a;/**注釋的文字*/(3)注釋的作用&#xff1a;…

java棧的應用_Java堆棧應用程序

我有一個Java問題&#xff0c;涉及閱讀一個文本文件&#xff0c;并檢查它是否正確地平衡了花括號&#xff0c;方括號和括號 - {&#xff0c;}&#xff0c;[&#xff0c;]&#xff0c;(和) ”。讀取文件沒有問題&#xff0c;但現在我應該使用名為DelimPos的數據成員來保存行和字…

Linux下導出MySQL為SQL文件_在linux命令下導出導入.sql文件的方法

本文講述了在linux命令下導出導入.sql文件的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;一、導出數據庫用mysqldump命令(注意mysql的安裝路徑&#xff0c;即此命令的路徑)&#xff1a;1、導出數據和表結構&#xff1a;mysqldump -u用戶名 -p密碼 數據庫名 >…

python無人機路徑規劃算法_RRT算法在Python中的實現,快速,拓展,隨機,樹

"""《基于智能優化與RRT算法的無人機任務規劃方法研究》博士論文《基于改進人工勢場法的路徑規劃算法研究》碩士論文"""import matplotlib.pyplot as pltimport randomimport mathimport copyshow_animation Trueclass Node(object):"&quo…

uc3842改可調電源教程_明緯開關電源改可調詳細教程

1.拆除啟動電阻&#xff0c;電路板是R12R59R58R9 四個150K的電阻。2.拆除原494供電&#xff0c;去掉J22一根跳線&#xff0c;12V輔助電源正極接J22到494一端&#xff0c;負極接地。3.去掉J15更換為20K電阻&#xff0c;同時拆掉變壓器下面的ZD1過壓保護&#xff0c;輸出可達到50…

duino例程 stm32_stm32duino

{"data":{"id":"8000-000000437045-0","name":"SEO專題頁欄目分發組","type":"1","position":"8000-000000004003-0","status":1,"linkList":[{"id"…

java webservice ip_通過Web Service實現IP地址查詢功能的示例

實例01 實現一個簡單的Web服務訪問本實例將實現IP地址查詢接口服務&#xff0c;根據用戶傳入的IP地址返回IP所在的省、市、地區&#xff0c;實例中將會用到IP地址庫用于查詢信息&#xff0c;由于數據較多&#xff0c;所以讀者可在光盤資源文件中直接附加數據庫文件&#xff0c;…

java默認數組值_數組元素默認的初始值都是什么

在Java中&#xff0c;使用數組時&#xff0c;如果為數組分配了內存空間&#xff0c;但是沒有為數組元素指定初始值&#xff0c;系統會自動為數組元素指定初始值。數組元素的初始值與數組的數據類型有關&#xff0c;對于不同數據類型的數組&#xff0c;其數組元素的初始值是不一…

java 異步通信處理_java異步通信

在Merlin之前,編寫Socket程序是比較繁瑣的工作.因為輸入輸出都必須同步.這樣,對于多客戶端客戶/服務器模式,不得不使用多線程.即為每個連接的客戶都分配一個線程來處理輸入輸出.由此而帶來的問題是可想而知的.程序員不得不為了避免死鎖,線程安全等問題,進行大量的編碼和測試.很…

Java統計做題正確率_ResNet:訓練期間的準確率為100%,但使用相同數據的預測準確率為33%...

我之前遇到過類似的問題&#xff0c;但解決方案非常簡單 . 你需要增加時代數 . 這是1000個紀元后的輸出[[ 9.99999881e-01 8.58182432e-08 9.54004670e-12][ 8.58779623e-20 9.99999881e-01 6.76907632e-08][ 2.12900631e-26 4.09224481e-34 1.00000000e00]]這是培訓日志..Epoc…

java成員初始化順序_Java成員初始化順序

1. 初始化順序在類的內部&#xff0c;變量定義的先后順序決定了初始化的順序。即使變量散布于方法定義之間&#xff0c;他們仍會在任何方法(包括構造器)被調用之前初始化。2. 靜態成員初始化順序1??初始化類的靜態成員或者靜態塊&#xff0c;靜態初始化只在Class對象首次加載…

java五星好評點評器_親,麻煩給個五星好評!—RatingBar

引言上一篇的CheckBox已經讓大家越來越接近實戰演練了&#xff0c;本章我們繼續分享干貨給大家&#xff0c;今天介紹一個實用的UI控件RatingBar(星級評分條)&#xff0c;對于使用過電商APP(某東&#xff0c;某寶等)的小伙伴們來說&#xff0c;應該不會陌生。在對商品進行評價時…