好吧,我打算快点。下面我有一个选择向我显示所有具有tinyint
data_type的column_names。使用下面返回的数据,我需要编写一个从my_table
中选择的封闭查询并更改SELECT
数据的输出,我怀疑CASE
时使用tinyint
0
为否,1
为是。
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'my_table'
AND DATA_TYPE = 'tinyint'
谢谢!
答案 0 :(得分:1)
您在样本中的查询:
create table a ( i tinyint, b char(5));
SELECT
COLUMN_NAME,
case DATA_TYPE
when 'tinyint' then 'Yes'
else 'No'
end
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'a';
已编辑因为OP失去了信仰。
嗨大人,相信我你不想要!好的...欢迎来到动态sql的黑暗面:create table a ( i tinyint, b char(5));
insert into a values (1,'si'),(0,'no');
SELECT @a :=
concat(
'select ',
group_concat(
case DATA_TYPE
when 'tinyint' then concat(
'if( ' ,
COLUMN_NAME ,
' = 0, \'No\', \'Yes\' )'
)
else COLUMN_NAME
end
),
' from ',
table_name ,
';'
)
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'a';
PREPARE stmt FROM @a;
EXECUTE stmt;
| IF( I = 0, 'NO', 'YES' ) | B |
---------------------------------
| Yes | si |
| No | no |