MySQL元数据函数在查询中获取投影列类型?

iHa*_*ter 7 mysql metadata

是否可以从 MySQL查询中获取字段类型,就像使用SHOW COLUMNS命令从表中获取它一样?例如从派生表中,

SELECT x -- presumedMetaFn(x) -- returns "int"
FROM (
  SELECT 1 AS x
  UNION SELECT 2
) AS t;
Run Code Online (Sandbox Code Playgroud)

鉴于上述查询,是否有一个函数或其他东西可以用来获取 x 的类型?PostgreSQL 通过系统信息函数提供此功能pg_typeof

SELECT x, pg_typeof(x)
FROM ( VALUES (1),(2) ) AS t(x);
 x | pg_typeof 
---+-----------
 1 | integer
 2 | integer
(2 rows)
Run Code Online (Sandbox Code Playgroud)

我不是在表上寻找元数据,而是从查询结果中寻找元数据。 随着psqlPostgreSQL的11+,这也可以通过运行\gdesc查询后。

Bri*_*and 11

在 MySQL 中,您可以通过创建一个临时表,然后DESCRIBE在该临时表上使用来获取此信息:

CREATE TEMPORARY TABLE `temp`
SELECT ...
FROM ...
LIMIT 0;

DESCRIBE `temp`;
Run Code Online (Sandbox Code Playgroud)

我们不能只DESCRIBE在原始表上使用,因为我们想知道类型的列是计算列,而不是直接从表中提取的列。同样,我们不能DESCRIBE直接在查询上使用,因为DESCRIBE只能在表上使用。创建临时表可以解决这两个问题。