0

わかりました、私はこれを手早くするつもりです。tinyint以下に、 data_typeを持つすべての column_names を表示する選択があります。以下に返されるデータを使用して、データmy_tableの出力を選択して変更する囲みクエリを作成する必要があります。SELECTCASEtinyint01

    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 に答える