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)**?显式地将列类型设置为
发布于 2021-12-14 18:24:56
MySQL视图确实返回TINYINT,但只在查询该类型的列时才返回。所有其他整数表达式都返回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 https://stackoverflow.com/questions/70353202
复制相似问题