CASE 表達式

来源:https://www.cnblogs.com/liyongke/archive/2019/03/11/10510811.html
-Advertisement-
Play Games

通過本篇文章我們來學習一下CASE表達式的基本使用方法。 CASE表達式有簡單 CASE表達式(simple case expression)和搜索 CASE表達式(searched caseexpression)兩種寫法,它們分別如下所示。 CASE 表達式的寫法 我們在編寫 SQL 語句的時候需 ...


通過本篇文章我們來學習一下CASE表達式的基本使用方法。

CASE表達式有簡單 CASE表達式(simple case expression)和搜索 CASE表達式(searched caseexpression)兩種寫法,它們分別如下所示。

  • CASE 表達式的寫法
 -- 簡單CASE 表達式
 CASE sex
 WHEN '1' THEN '' 
 WHEN '2' THEN ''
 ELSE '其他' 
 END
            
 -- 搜索CASE 表達式
 CASE
 WHEN sex = '1' 
 THEN '' 
 WHEN sex = '2' 
 THEN ''
 ELSE '其他' 
 END
 
這兩種寫法的執行結果是相同的,"sex"列(欄位)如果是 '1',那麼結果為男;如果是 '2',那麼結果為女。簡單 CASE表達式正如其名,寫法簡單,但能實現的事情比較有限。簡單 CASE表達式能寫的條件,搜索 CASE表達式也能寫,我個人推薦採用搜索 CASE表達式的寫法。

我們在編寫 SQL 語句的時候需要註意,在發現為真的 WHEN子句時,CASE表達式的真假值判斷就會中止,而剩餘的 WHEN子句會被忽略。為了避免引起不必要的混亂,使用 WHEN子句時要註意條件的排他性。

  • 剩餘的 WHEN 子句被忽略的寫法示例
1 -- 例如,這樣寫的話,結果里不會出現“第二”
2  CASE 
3  WHEN col_1 IN ('a', 'b') THEN '第一' 
4  WHEN col_1 IN ('a') THEN '第二'
5  ELSE '其他' END

此外,使用 CASE 表達式的時候,還需要註意以下幾點。 註意事項 1:統一各分支返回的數據類型

雖然這一點無需多言,但這裡還是要強調一下:一定要註意 CASE 表達式里各個分支返回的數據類型是否一致。某個分支返回字元型,而其他分支返回數值型的寫法是不正確的。

註意事項 2:不要忘了寫 END

使用 CASE 表達式的時候,最容易出現的語法錯誤是忘記寫 END 。雖然忘記寫時程式會返回比較容易理解的錯誤消息,不算多麼致命的錯誤。但是,感覺自己寫得沒問題,而執行時卻出錯的情況大多是由這個原因引起的,所以請一定註意一下。

註意事項 3:養成寫 ELSE 子句的習慣

與 END 不同,ELSE 子句是可選的,不寫也不會出錯。不寫 ELSE 子句時,CASE 表達式的執行結果是 NULL 。但是不寫可能會造成"語法沒有錯誤,結果卻不對"這種不易追查原因的麻煩,所以最好明確地寫上 ELSE 子句(即便是在結果可以為 NULL 的情況下)。養成這樣的習慣後,我們從代碼上就可以清楚地看到這種條件下會生成 NULL,而且將來代碼有修改時也能減少失誤。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 課程簡介:本課程從高頻知識內容入手,全面解析提分,以使各位考生在有限的時間內,達到最理想的成績。本課程適應於以下情況的考生:1)有一定基礎,但備考時間不足2)雖然複習時間多,但抓不到重點3)在複習備考過程中,有疑難未決的4)想通過突擊,提分通過資料庫系統工程師考試的講師簡介:清哥 某機構高級金牌講師 ...
  • 課程簡介:本課程從高頻知識內容入手,全面解析提分,以使各位考生在有限的時間內,達到最理想的成績。本課程適應於以下情況的考生:1)有一定基礎,但備考時間不足2)雖然複習時間多,但抓不到重點3)在複習備考過程中,有疑難未決的4)想通過突擊,提分通過資料庫系統工程師考試的講師簡介:清哥 某機構高級金牌講師 ...
  • 一、創建虛擬機 1、從網上下載一個Centos6.X的鏡像(http://vault.centos.org/) 2、安裝一臺虛擬機配置如下:cpu1個、記憶體1G、磁碟分配20G(看個人配置和需求,本人配置有點低所以參數有點低) 3、虛擬機安裝建議去挑戰minidesktop,分區自己創建有/boot ...
  • 筆記記錄自林曉斌(丁奇)老師的《MySQL實戰45講》 (本篇內圖片均來自丁奇老師的講解,如有侵權,請聯繫我刪除) 10) --MySQL為什麼有時會選錯索引? MySQL中的一張表上可以支持多個索引的,但是,往往你寫SQL語句的時候不會去主動指定使用哪個索引。也就是說,使用哪個索引是由MySQL來 ...
  • 我們在網站開發中,涉及MySQL資料庫查詢時,常常需要將兩個表或多個表聯合起來進行查詢數據,這就用到了MySQL中的JOIN函數。 JOIN函數有三種,分別是: LEFT JOIN 左連接查詢: 查詢兩個表中共有的數據,並以左邊的表為基準顯示左表的全部數據,顯示右表符合條件的數據, 不足的地方顯示N ...
  • 條件查詢 使用Where進行數據篩選結果為True的會出現在結果集裡面 select 欄位 from 表名 where 條件; # 例: select * from test_table where id > 2; # 篩選出id大於2的所有欄位 比較運算符 等於= 大於> 大於等於>= 小於< 小 ...
  • connect by 用於存在父子,祖孫,上下級等層級關係的數據表進行層級查詢。 語法格式: { CONNECT BY [ NOCYCLE ] condition [AND condition]... [ START WITH condition ] | START WITH condition C ...
  • SQL優化是老生常談的話題。隨著關係型資料庫的發展,資料庫內部現在可以進行一些優化。在查詢分析,查詢檢查,資料庫內部會代數優化和物理優化之後再執行。但是,這需要我們理解資料庫內部規律才能進行。現在,我們需要找出RDBMS的優化規律,以寫出適合RDBMS自動優化的SQL語句。只看SQL優化總結,可以翻 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...