`
一个人旅行
  • 浏览: 90334 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql中没有boolean类型

阅读更多
在mysql中对bool或boolean数据类型这样描述:
BOOL, BOOLEAN
These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true:
mysql> SELECT IF(0, 'true', 'false');
+------------------------+
| IF(0, 'true', 'false') |
+------------------------+
| false                  |
+------------------------+

mysql> SELECT IF(1, 'true', 'false');
+------------------------+
| IF(1, 'true', 'false') |
+------------------------+
| true                   |
+------------------------+

mysql> SELECT IF(2, 'true', 'false');
+------------------------+
| IF(2, 'true', 'false') |
+------------------------+
| true                   |
+------------------------+
However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here:

mysql> SELECT IF(0 = FALSE, 'true', 'false');
+--------------------------------+
| IF(0 = FALSE, 'true', 'false') |
+--------------------------------+
| true                           |
+--------------------------------+

mysql> SELECT IF(1 = TRUE, 'true', 'false');
+-------------------------------+
| IF(1 = TRUE, 'true', 'false') |
+-------------------------------+
| true                          |
+-------------------------------+

mysql> SELECT IF(2 = TRUE, 'true', 'false');
+-------------------------------+
| IF(2 = TRUE, 'true', 'false') |
+-------------------------------+
| false                         |
+-------------------------------+

mysql> SELECT IF(2 = FALSE, 'true', 'false');
+--------------------------------+
| IF(2 = FALSE, 'true', 'false') |
+--------------------------------+
| false                          |
+--------------------------------+

对bool或boolean的另外一方面的说明
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')
-------

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

相关推荐

    mysql数据库的基本操作语法

    MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: ...

    MySQL 数据类型 大全

    BIT,BOOL,BOOLEAN   1   如果为无符号数,可以存储从0到255的数;   否则可以存储从-128到127的数。   SMALLINT(M)   2   如果为无符号数,可以存储从0到65535的数;   否则可以存储从-32768到32767的数...

    ts typescript.txt

    02 Typescript 中的数据类型 boolean 数字类型 number类型 string类型 array类型元组类型 (tuple)枚举类型 (enum) (上) (20分29秒).rar 03 Typescript中的数据类型 任意类型 (any) null 和 undefined ...

    基于SSM框架+Mysql的企业CRM客户关系管理系统项目源码+数据库+项目说明.zip

    使用@RequestBody接收Axios传来的Json对象时,接收到的checked属性为一个Boolean类型,而不是一个String 2. 在用户不需要记住密码时,调用setMaxAge方法将cookie的生命周期设置为0,即可销毁cookie 3. 由于...

    MySQL学习笔记4:完整性约束限制字段

    人可以同名,但是身份证号码却是唯一的, 创建主键的目的在于快速查找到表中的某一条信息 单字段主键 代码如下: mysql&gt; create table student( -&gt; id int primary key, -&gt; name varchar(20), -&gt; sex boolean -&gt; );...

    MongoDb数据结构详解.pdf

    MongoDb数据结构详解 数据结构详解 ⾸先,向数据库插⼊⼀条bjson数据 ⾸先是定义⽂档,然后使⽤admin⽤户名密码登录,进⼊test数据库,向test数据库中插⼊此⽂档... ⽂档中保存到数据类型可以为:null、boolean、Strin

    System.Drawing.Image.FromStream 出现参数无效的解决方法及图片类型判断

    System.Drawing.Image.FromStream 出现参数无效的解决方法

    MySQL学习笔记3:表的基本操作介绍

    Database changed 选择好数据库之后,我们就可以在此数据库之中创建表了 创建表 mysql&gt; create table student( -&gt; id int, -&gt; name varchar(20), -&gt; sex boolean -&gt; ); Query OK, 0 rows affected (0.11 sec) ...

    MySQL中一些常用的数据表操作语句笔记

    0.创建表 CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件]) ...create table example(id int, name varchar(20), sex boolean);

    基于springboot图书借阅管理系统【源码+数据库】

    一、项目简介 本项目是一套基于springboot图书借阅管理系统,... 另外还有图书类型分支,添加图书时下拉框选择图书类型,图书类型也可以进行增删改查(此处仍采用逻辑删除处理)。 滞纳金=实际还书时间-计划还书时间 ...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List&lt;User&gt; , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

    laravel-migrations-generator:Laravel迁移生成器:从现有数据库架构自动生成迁移

    修复了MySQL tinyInteger和boolean问题。 能够产生softDeletes , rememberToken , timestamps类型。 对MySQL的支持set 。 现在可以生成可为空的timestamp 删除了未使用的类。 添加了UT! 将添加更多的UT以...

    SqliteDev 384

     首先你会接触到一个让你惊讶的名词: Typelessness 无类型 对 SQLite是无类型的 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中 无论这列声明的数据类型是什么 只有在一种情况下不是 稍后解释 ...

    基于模板的代码生成器LKGenerator1.1.0_x86

    ${field.isKey}实体属性注解中的isKey值,boolean类型,配置后可以使用${bean.key}变量. ${field.isRequired}实体属性中的isRequired属性,该属性可以配置该字段是否为必填项. ${field.type}实体类属注解中的类型,例如...

    基于模板的代码生成器LKGenerator1.1.0_x64

    ${field.isKey}实体属性注解中的isKey值,boolean类型,配置后可以使用${bean.key}变量. ${field.isRequired}实体属性中的isRequired属性,该属性可以配置该字段是否为必填项. ${field.type}实体类属注解中的类型,例如...

    SQLite(SqliteDev)

     诚然SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎. SQLite支持常见的数据类型, 如:  CREATE TABLE ex2(  ...

    JAVA WEB框架,java网站一个模块只用写一个文件

    查询结果放在一个链表中了 用的时候用强制类型转换 把Object转换为Szdw就行了。 以在的操作是不是有局限性?删除非要按ID删除?查询的结果不能筛选? 作者已经考虑到这个,下面介绍使用附件。 public void setHql...

    seata学习–命令行启动参数解析(JCommander)

    JCommander是一个用于解析命令行参数的Java框架,支持解析所有基本的数据类型,也支持将命令行解析成用户自定义的类型,只需要写一个转变函数。 首先我们来看下seata的源码: @Parameter(names = --help, help = ...

    jpivot学习总结.doc

    你一定要指定其中的各种关系 , 如果没有指定 , 就默认 Hierarchy 里面装的是来自立方体中的真实表 . 属性如下: 属性名 含义 name Hierarchy 的名称,该值可以为空,为空时表示 Hirearchy 的名字和 Dimension 的...

Global site tag (gtag.js) - Google Analytics