mysql資料庫中tinyint(1) 儲存數字時候取值為True、False解釋
mysql資料庫中tinyint(1) 儲存數字時候取值為True、False解釋
1、首先解釋下mysql中的bool型別
boolean型別
MYSQL儲存BOOLEAN值時用1代表TRUE,0代表FALSE,boolean在MySQL裡的型別為tinyint(1),
MySQL裡有四個常量:true,false,TRUE,FALSE,它們分別代表1,0,1,0,
mysql> select true,false,TRUE,FALSE; +------+-------+------+-------+ | TRUE | FALSE | TRUE | FALSE | +------+-------+------+-------+ | 1 | 0 | 1 | 0 | +------+-------+------+-------+可以如下插入boolean值:insert into [xxxx(xx)] values(true),當然也可以values(1);
舉例如下:
mysql> alter table test add isOk boolean; Query OK mysql> desc test; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | isOk | tinyint(1) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ mysql> insert into test(isOk) values(true); Query OK mysql> select isOk from test ; +------+ | isOk | +------+ | 1 | +------+MySQL沒有boolean型別。這也是比較奇怪的現象。例:
create table xs ( id int primary key, bl boolean )這樣是可以建立成功,但檢視一下建表後的語句,就會發現,mysql把它替換成tinyint(1)。也就是說mysql把boolean=tinyInt了,但POJO類要定義成什麼型別呢?
因為慣性思維,在java類中也把它定義成type。然後在Struts中使用<s:check/>標籤。這就產生一個嚴重的問題了。<s:check>是boolean,而POJO去定義成byte。這樣資料永遠也無法提交,被struts的intercept攔截掉了。解決辦法是在POJO類中定義成boolean,在mysql中定義成tinyint(1)。
------
TINYINT(1) or ENUM( 'true' , 'false')
-------
2、遇到mysql資料庫儲存欄位型別為tinyint(1)的數字數值的時候,取出後會變成True、false
我們可以在sql語句進行處理:
case 欄位 when 0 then '狀態1' when 1 then '狀態2' when 3 then '狀態3' end as state
還有一種不是很好的辦法就是修改欄位型別長度為tinyint(4),如果是大資料量表不建議,因為資料庫空間佔用增長後還是很大的。
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- peewee 的 BooleanField 是翻譯為 tinyint(1) 還是 enum('true','false')?BooleanFalse
- 什麼時候該使用NoSQL儲存資料庫?SQL資料庫
- true || false && falseFalse
- MySQL:Innodb中數字的儲存方式MySql
- MySQL 資料庫儲存引擎MySql資料庫儲存引擎
- Ruby中的true和falseFalse
- 儲存資料的時候,decimal總是把我的小數如2.47儲存成3Decimal
- MySql資料庫——儲存過程MySql資料庫儲存過程
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- mysql中bigint、int、mediumint、smallint 和 tinyint的取值範圍MySql
- Mysql中tinyint(1)和tinyint(4)的區別詳析WIFRMySql
- 物件直接量屬性為數字時如何取值物件
- MySQL資料庫MyISAM儲存引擎轉為Innodb的方法MySql資料庫儲存引擎
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- MySQL資料庫的儲存引擎(轉)MySql資料庫儲存引擎
- Prometheus時序資料庫-磁碟中的儲存結構Prometheus資料庫
- null >=0 ? true:falseNullFalse
- WPF ClipToBounds True or falseFalse
- MYSQL 資料型別儲存-數值型MySQL 資料型別
- 修改MySQL資料庫儲存位置datadirMySql資料庫
- MySQL資料庫InnoDB儲存引擎中的鎖機制GVMySql資料庫儲存引擎
- 明解資料庫------資料庫儲存演變史資料庫
- 分庫解決方案—資料儲存
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 資料庫mysql儲存遇到禁用怎麼辦?資料庫MySql
- Mysql 資料庫水平分表 儲存過程MySql資料庫儲存過程
- 【Python3網路爬蟲開發實戰】5-資料儲存-2-關係型資料庫儲存-1 MySQL儲存Python爬蟲資料庫MySql
- mysql 中資料型別tinyint(2)括號中的數字意思MySql資料型別
- #第9篇分享:python資料儲存-MySQL資料庫PythonMySql資料庫
- 為什麼不用資料庫儲存圖片?資料庫
- EXP,IMP遷移資料庫的時候註釋亂碼解決方法資料庫
- 列式儲存資料庫資料庫
- Java中“100=100”為true,而"1000=1000"為false?JavaFalse
- mysql儲存資料,varchar型別中的資料變成了科學計數法?MySql型別
- js中return、return true、return false的區別JSFalse