好的,我会尽快完成这件事。下面我有一个选择,显示了所有具有 tinyint
数据类型的列名称。对于下面返回的数据,我需要编写一个从 my_table
中选择的封闭查询,并更改 SELECT
数据的输出,我怀疑是通过使用 CASE
当 tinyint
为 0
时为“否”,1
为"is"。
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'my_table'
AND DATA_TYPE = 'tinyint'
谢谢!
最佳答案
您在示例中的查询:
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 |
关于mysql - 根据 information_schema 中的 column_type 更改选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12849149/