【mysql】關于枚舉值 '1','0'的神奇判斷

背景與探索

最近在做一個簡單的用戶信息的查詢及展示,其中在對用戶性別判斷的時候,出現(xiàn)了一個神奇的情況,首先數(shù)據(jù)庫里有個表存儲了性別字段 sex ,字段類型是:enum('0','1') DEFAULT NULL COMMENT '性別(0/女,1/男)'
整體表結構如下:

CREATE TABLE `user` (
  `userid` int(10) unsigned NOT NULL COMMENT '登錄賬號ID',
  `sex` enum('0','1') DEFAULT NULL COMMENT '性別(0/女,1/男)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='個人基礎信息';

表中數(shù)據(jù)如下:


image.png

然后寫了個簡單的sql來判斷男女,如下:

SELECT  userid,if(sex=1,'男','女') as '性別' from user
image.png

發(fā)現(xiàn)顯示的結果跟數(shù)據(jù)庫存儲的是完全相反的,但是的第一反應是不是判斷反了,結果反復核實了幾遍并沒有判斷反,然后看數(shù)據(jù)庫存儲的字段是枚舉,心里想著說是不是類型問題導致的,結果將sex=1改成sex=‘1’,結果就對了,sql如下:

SELECT  userid,if(sex='1','男','女') as '性別' from user
image.png
結論與總結

從上面的例子中我們知道,mysql對字符型的判斷不能直接轉換成數(shù)字,必須要跟對應的字符比較才能得到正確的結果,這個問題是平時很少注意到的問題,但是為什么當sex的值是'1'與1比較是false,sex值是'0'與1比較是true這個目前還沒有搞清楚原理。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,311評論 2 89
  • MYSQL 基礎知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 8,066評論 5 115
  • 連續(xù)三年了。每年的這個時候,遠在福建漳州的朋友沈先生總會寄些水仙來。他似乎算準了花期,清水...
    春風小院閱讀 524評論 0 0
  • 時間:2015.10.23 21:00-22:20 進度:第1-60題 總結: 第一部分:常識部分 錯誤原因: 1...
    MissBao88閱讀 229評論 0 1
  • 第五章 幸福來自何處 1/2 幸福的兩個原則: 原則一:進展原則 我們大多有過這種經(jīng)歷:以為做完某件事會異常的開心...
    哇620閱讀 335評論 0 0

友情鏈接更多精彩內(nèi)容