繁体   English   中英

如何在 mysql 视图中强制数据类型 boolean

[英]How to force datatype boolean in mysql view

CREATE VIEW as SELECT... FROM mytable

这将创建一个带有int unsiged列的视图。

但在我看来,我想要的是booleantinyint列数据类型。

这可能吗,因为CAST()CONVERT()似乎都不支持转换为boolean类型。

如果我创建一个普通表,则以下结果为tinyint(1)

CREATE TABLE test (
  Id        int(10)      unsigned NOT NULL auto_increment,
  myflag    boolean      default false,
  PRIMARY KEY (Id)
);

我不能在视图中实现相同的效果,意味着将列类型显式设置为tinyint (1)吗?

MySQL 视图确实返回 TINYINT,但前提是您查询该类型的列。 所有其他 integer 表达式都返回 BIGINT。

我运行mysql --column-type-info以获取有关结果的调试信息。

mysql> create table t ( b bool );

mysql> create or replace view v as select b from t;

mysql> select b from v;
Field   1:  `b`
Catalog:    `def`
Database:   `test2`
Table:      `v`
Org_table:  `v`
Type:       TINY
Collation:  binary (63)
Length:     1
Max_length: 0
Decimals:   0
Flags:      NUM 

mysql> select NOT b from v;
Field   1:  `NOT b`
Catalog:    `def`
Database:   ``
Table:      ``
Org_table:  ``
Type:       LONGLONG
Collation:  binary (63)
Length:     1
Max_length: 0
Decimals:   0
Flags:      BINARY NUM 

mysql> create or replace view v (b) as select NOT b from t;

mysql> select b from v;
Field   1:  `b`
Catalog:    `def`
Database:   ``
Table:      `v`
Org_table:  `v`
Type:       LONGLONG
Collation:  binary (63)
Length:     1
Max_length: 0
Decimals:   0
Flags:      BINARY NUM 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM