[英]How to force datatype boolean in mysql view
CREATE VIEW as SELECT... FROM mytable
这将创建一个带有int unsiged
列的视图。
但在我看来,我想要的是boolean
或tinyint
列数据类型。
这可能吗,因为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.