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
- true || false && falseFalse
- MySQL:Innodb中數字的儲存方式MySql
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- MySql資料庫——儲存過程MySql資料庫儲存過程
- Java中“100=100”為true,而"1000=1000"為false?JavaFalse
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- Ruby中的true和falseFalse
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- Mysql中tinyint(1)和tinyint(4)的區別詳析WIFRMySql
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- Prometheus時序資料庫-磁碟中的儲存結構Prometheus資料庫
- 明解資料庫------資料庫儲存演變史資料庫
- WPF ClipToBounds True or falseFalse
- MySQL資料庫InnoDB儲存引擎中的鎖機制GVMySql資料庫儲存引擎
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- #第9篇分享:python資料儲存-MySQL資料庫PythonMySql資料庫
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 【Python3網路爬蟲開發實戰】5-資料儲存-2-關係型資料庫儲存-1 MySQL儲存Python爬蟲資料庫MySql
- 資料庫mysql儲存遇到禁用怎麼辦?資料庫MySql
- Python解惑:True與FalsePythonFalse
- MySQL 資料庫儲存 Emoji 表情及特殊符號MySql資料庫符號
- MySQL資料分析儲存引擎示例講解HKEAMySql儲存引擎
- 關於Mysql資料儲存,你瞭解多少?MySql
- 為什麼不用資料庫儲存圖片?資料庫
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 成為MySQL DBA後,再看ORACLE資料庫(六、邏輯儲存結構)MySqlOracle資料庫
- 如何在資料庫中儲存小數:FLOAT、DECIMAL還是BIGINT?資料庫Decimal
- 資料儲存(1):從資料儲存看人類文明-資料儲存器發展歷程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- mysql儲存資料,varchar型別中的資料變成了科學計數法?MySql型別
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 詳解資料庫儲存的資料結構LSM Tree資料庫資料結構
- gitlab資料庫儲存位置Gitlab資料庫
- 資料庫儲存過程資料庫儲存過程
- mysql中使用儲存過程生成1億條資料MySql儲存過程
- js中return、return true、return false的區別JSFalse
- 怎樣在資料庫中儲存貨幣資料庫