0

好的,我会尽快完成这个。下面我有一个选择,显示了所有具有tinyintdata_type 的 column_names。使用下面返回的数据,我需要编写一个封闭的查询,从中选择my_table并更改SELECT数据的输出,我怀疑使用CASEwhen a tinyintis 0to No 和1Yes。

    SELECT 
        COLUMN_NAME
    FROM
        INFORMATION_SCHEMA.COLUMNS
    WHERE
        table_name = 'my_table'
    AND DATA_TYPE = 'tinyint'

谢谢!

4

1 回答 1

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 |
于 2012-10-11T22:08:35.767 回答