【发布时间】:2020-12-06 07:31:57
【问题描述】:
举个例子:
WITH tbl as (
select 1, 1e2, 1.2e-4, 1.235, null, 0b01, if(1=1, 1, 2) union
select 1, 1e2, 1.2e-4, 1.235, null, 0b01, if(1=1, 1, 2.4) union
select 1, 1e2, 1.2e-4, 1.235, null, 0b01, if(1=1, 1, 'a')
)
select * from tbl
如果我只在cte 中包含第一个select 语句,则类型将为int。如果我包含第一个和第二个,则类型将为DECIMAL,如果我包含所有三个,则类型将转换为VARCHAR(无论三个语句的位置如何)。
mysql 如何确定将其转换为哪种类型——我在哪里可以找到“类型层次结构”?大多数其他 DBMS 是否同样处理这个问题,还是每个 DBMS 都不同?
【问题讨论】: