国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-25 19:08:47
字體:
來源:轉載
供稿:網友

前言

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

mysql 判斷操作一種語法:

case ..when語句

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

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

mysql> select * from id_card_message;+------+--------------------+| id | id_card_no |+------+--------------------+| 1 | 342513199411222515 || 1 | 342624197812023498 || 1 | 310908198910123348 |+------+--------------------+

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

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)

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

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

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 |+------+--------------------+

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

總結

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


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿尔山市| 麦盖提县| 舒城县| 新晃| 察隅县| 陕西省| 沁阳市| 麻城市| 东辽县| 墨江| 临海市| 乡城县| 三明市| 玉林市| 自贡市| 邓州市| 汉寿县| 永康市| 阳山县| 丽江市| 无锡市| 兴城市| 铜山县| 建始县| 清苑县| 广水市| 吴川市| 南江县| 伊川县| 广丰县| 东山县| 青州市| 石屏县| 长葛市| 武宁县| 雅安市| 明溪县| 大丰市| 揭东县| 黄石市| 华蓥市|