mysql中没有boolean类型

在mysql中对bool或boolean数据类型这样描述: 
Java代码 
  1. BOOL, BOOLEAN  
  2. These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true:  
  3. mysql> SELECT IF(0'true''false');  
  4. +------------------------+  
  5. | IF(0'true''false') |  
  6. +------------------------+  
  7. false                  |  
  8. +------------------------+  
  9.   
  10. mysql> SELECT IF(1'true''false');  
  11. +------------------------+  
  12. | IF(1'true''false') |  
  13. +------------------------+  
  14. true                   |  
  15. +------------------------+  
  16.   
  17. mysql> SELECT IF(2'true''false');  
  18. +------------------------+  
  19. | IF(2'true''false') |  
  20. +------------------------+  
  21. true                   |  
  22. +------------------------+  
  23. However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here:  
  24.   
  25. mysql> SELECT IF(0 = FALSE, 'true''false');  
  26. +--------------------------------+  
  27. | IF(0 = FALSE, 'true''false') |  
  28. +--------------------------------+  
  29. true                           |  
  30. +--------------------------------+  
  31.   
  32. mysql> SELECT IF(1 = TRUE, 'true''false');  
  33. +-------------------------------+  
  34. | IF(1 = TRUE, 'true''false') |  
  35. +-------------------------------+  
  36. true                          |  
  37. +-------------------------------+  
  38.   
  39. mysql> SELECT IF(2 = TRUE, 'true''false');  
  40. +-------------------------------+  
  41. | IF(2 = TRUE, 'true''false') |  
  42. +-------------------------------+  
  43. false                         |  
  44. +-------------------------------+  
  45.   
  46. mysql> SELECT IF(2 = FALSE, 'true''false');  
  47. +--------------------------------+  
  48. | IF(2 = FALSE, 'true''false') |  
  49. +--------------------------------+  
  50. false                          |  
  51. +--------------------------------+  

对bool或boolean的另外一方面的说明 
Java代码 
  1. boolean类型  
  2. MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),  
  3. MySQL里有四个常量:true,false,TRUE,FALSE,它们分别代表1,0,1,0,  
  4. mysql> select true,false,TRUE,FALSE;  
  5. +------+-------+------+-------+  
  6. | TRUE | FALSE | TRUE | FALSE |  
  7. +------+-------+------+-------+  
  8. |    1 |     0 |    1 |     0 |  
  9. +------+-------+------+-------+  
  10. 可以如下插入boolean值:insert into [xxxx(xx)] values(true),当然也可以values(1);  
  11. 举例如下:  
  12. mysql> alter table test add isOk boolean;  
  13. Query OK  
  14. mysql> desc test;  
  15. +-------+-------------+------+-----+---------+----------------+  
  16. | Field | Type        | Null | Key | Default | Extra          |  
  17. +-------+-------------+------+-----+---------+----------------+  
  18. | id    | int(11)     | NO   | PRI | NULL    | auto_increment |  
  19. | isOk  | tinyint(1)  | YES  |     | NULL    |                |  
  20. +-------+-------------+------+-----+---------+----------------+  
  21. mysql> insert into test(isOk) values(true);  
  22. Query OK  
  23. mysql> select isOk from test ;  
  24. +------+  
  25. | isOk |  
  26. +------+  
  27. |    1 |  
  28. +------+  
  29. =================  
  30.  MySQL没有boolean类型。这也是比较奇怪的现象。例:  
  31. create table xs  
  32. (  
  33.    id int primary key,  
  34.    bl boolean  
  35. )  
  36. 这样是可以创建成功,但查看一下建表后的语句,就会发现,mysql把它替换成tinyint(1)。也就是说mysql把boolean=tinyInt了,但POJO类要定义成什么类型呢?  
  37. 因为惯性思维,在java类中也把它定义成type。然后在Struts中使用<s:check/>标签。这就产生一个严重的问题了。<s:check>是boolean,而POJO去定义成byte。这样数据永远也无法提交,被struts的intercept拦截掉了。解决办法是在POJO类中定义成boolean,在mysql中定义成tinyint(1)。  
  38.    
  39. ------  
  40.  TINYINT(1) or ENUM( 'true' , 'false')  
  41. -------  

mysql中if函数的使用 
Java代码 
  1. MYSQL 手册中是这么解释的:  
  2. IF(expr1,expr2,expr3)   
  3. 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值