首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql视图中强制使用数据类型布尔值

如何在mysql视图中强制使用数据类型布尔值
EN

Stack Overflow用户
提问于 2021-12-14 17:32:03
回答 1查看 185关注 0票数 1

CREATE VIEW as SELECT ... FROM mytable

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

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

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

如果我创建了一个普通表,下面的结果将显示在tinyint(1)

代码语言:javascript
复制
CREATE TABLE test (
  Id        int(10)      unsigned NOT NULL auto_increment,
  myflag    boolean      default false,
  PRIMARY KEY (Id)
);

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

EN

回答 1

Stack Overflow用户

发布于 2021-12-14 18:24:56

MySQL视图确实返回TINYINT,但只在查询该类型的列时才返回。所有其他整数表达式都返回BIGINT。

我运行mysql --column-type-info来获得结果的调试信息。

代码语言:javascript
复制
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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70353202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档