MySQL metadata function to get projected column type in query?
Within MySQL, you can get this information by creating a temporary table, then using DESCRIBE
on that temporary table:
CREATE TEMPORARY TABLE `temp`
SELECT ...
FROM ...
LIMIT 0;
DESCRIBE `temp`;
We cannot just use DESCRIBE
on the original table because the column we want to know the type of is a calculated column, not something being directly pulled from a table. Likewise, we cannot use DESCRIBE
directly on the query, because DESCRIBE
can only be used on tables. Creating a temporary table solves both of those problems.
There isn't a comparable way to hand a query to MySQL and ask it to return a resultset containing the names and attributes of the columns that your query will return when it is executed.
However, the library you're using to access MySQL probably has such a mechanism that your code could use... because on the wire, MySQL does return this information to clients with every executed query.
By way of example, the DBD::mysql library in Perl returns arrays of column names and data types.
An executed statement handle returns an array of the column names in @{$sth->{NAME}} and array of the column data types in @{$sth->{mysql_type_name}}. It gets these from functions provided by the MySQL C API, which (as far as I know) is the same underlying code used by a lot of different languages for their MySQL libraries... so I would expect similar structures to be exposed in other environments.