欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于case when語句的報錯問題詳解

 更新時間:2018年08月15日 11:21:32   作者:一直是小學生  
SQL CASE 表達式是一種通用的條件表達式,類似于其它語言中的 if/else 語句,下面這篇文章主要給大家介紹了關于case when語句的報錯問題的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

在mysql數(shù)據(jù)庫中,有時候我們會使用到類似if else的判斷操作。那么mysql中怎么處理這種需求呢?

mysql 判斷操作一種語法:

case ..when語句

但最近在使用的時候遇到了一個問題,下面話不多說了,來一起看看詳細的介紹吧

直接說明問題。我有一張存儲身份證號碼的表id_card_message,表結構和數(shù)據(jù)如下(MySQL5.7.14):

mysql> select * from id_card_message;

+------+--------------------+

| id | id_card_no |

+------+--------------------+

| 1 | 342513199411222515 |

| 1 | 342624197812023498 |

| 1 | 310908198910123348 |

+------+--------------------+

現(xiàn)在根據(jù)這個身份證號碼的倒數(shù)第二位來顯示出男女信息,我按照下面的SQL語句執(zhí)行,結果報出相應的錯誤:

mysql> select case substr(id_card_no,17,1)

-> when (1,3,5,7,9) then '男'

-> when (0,2,4,6,8) then '女' end 'sex',

-> id_card_no

-> from id_card_message;

ERROR 1241 (21000): Operand should contain 1 column(s)

錯誤提示我:操作數(shù)應該包含一列。這里只能懷疑是when子句后面括號內的值過多的原因造成的,那么這種case when結構下,when子句后面只能出現(xiàn)一個值嗎?查了以下官方文檔在13.6.5.1節(jié)的case語法,貌似對這個沒有說明。

當然,換種語句格式,一樣能得到所需要的數(shù)據(jù)。如下:

mysql> select

-> case

-> when substr(id_card_no,17,1) in (1,3,5,7,9) then '男'

-> when substr(id_card_no,17,1) in (0,2,4,6,8) then '女' end 'sex',

-> id_card_no

-> from id_card_message;

+------+--------------------+

| sex | id_card_no |

+------+--------------------+

| 男 | 342623199610222515 |

| 男 | 342624197812023498 |

| 女 | 310908198910123348 |

+------+--------------------+

現(xiàn)在的想法就是,在“CASE value WHEN compare value”的格式下,when子句后面的compare value只能是單個值,不能接多個值。例如上面的compare value的值有1,3,5,7,9。這種情況下只能采用上面的SQL。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • MySQL中按照多字段排序及問題解決

    MySQL中按照多字段排序及問題解決

    這篇文章主要介紹了MySQL中按照多字段排序及問題解決的方法,非常的實用,有需要的小伙伴可以參考下。
    2015-03-03
  • mysql報錯Duplicate entry ‘xxx‘ for key ‘字段名‘的解決

    mysql報錯Duplicate entry ‘xxx‘ for key&nbs

    有時候對表進行操作,例如加唯一鍵,或者插入數(shù)據(jù),會報錯,本文就來介紹一下mysql報錯Duplicate entry ‘xxx‘ for key ‘字段名‘的解決方法,感興趣的可以了解一下
    2023-10-10
  • mysql insert語句操作實例講解

    mysql insert語句操作實例講解

    這篇文章主要介紹了mysql insert語句操作實例講解,本文講解了insert的基本語法、批量插入多條數(shù)據(jù)、使用set插入數(shù)據(jù)、INSERT…SELECT語句等內容,需要的朋友可以參考下
    2014-12-12
  • MySQL查詢空字段或非空字段(is null和not null)

    MySQL查詢空字段或非空字段(is null和not null)

    本文介紹在MySQL中,面對值為空(NULL)的字段,應該如何查詢。怎么判斷一個字段的值為NULL或不為NULL,需要的朋友可以參考下
    2016-04-04
  • MySQL 使用自定義變量進行查詢優(yōu)化

    MySQL 使用自定義變量進行查詢優(yōu)化

    MySQL自定義變量估計很少人有用到,但是如果用好了也是可以輔助進行性能優(yōu)化的。需要注意的是變量是基于連接會話的,而且可能存在一些意外的情況,需要小心使用。本篇介紹如何利用自定義變量進行查詢優(yōu)化,提高效率
    2021-05-05
  • Mysql5.7修改root密碼教程

    Mysql5.7修改root密碼教程

    今天小編就為大家分享一篇關于Mysql5.7修改root密碼教程,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • MySQL磁盤碎片整理實例演示

    MySQL磁盤碎片整理實例演示

    這篇文章主要給大家介紹了關于MySQL磁盤碎片整理的相關資料,為什么數(shù)據(jù)庫會產(chǎn)生碎片,以及如何清理磁盤碎片,還有一些清理磁盤碎片的注意事項,需要的朋友可以參考下
    2022-04-04
  • MySQL存儲過程的優(yōu)化實例

    MySQL存儲過程的優(yōu)化實例

    在編寫MySQL存儲過程的過程中,我們會時不時地需要對某些存儲過程進行優(yōu)化,其目的是確保代碼的可讀性、正確性及運行性能。本文以作者實際工作為背景,介紹了對某一個MySQL存儲過程優(yōu)化的整個過程。
    2016-07-07
  • IPv6設置后如何解決MySQL無法連接localhost的問題

    IPv6設置后如何解決MySQL無法連接localhost的問題

    這篇文章主要介紹了IPv6設置后如何解決MySQL無法連接localhost的問題,需要的朋友可以參考下
    2016-04-04
  • mac安裝mysql初始密碼忘記怎么辦

    mac安裝mysql初始密碼忘記怎么辦

    這篇文章主要為大家詳細介紹了mac安裝mysql忘記初始密碼的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論