2017-02-10 4 views
0

colilumnのデータ型をbigintからintに変更しようとしています。私は、ALTERステートメントを実行する方法と、現在、それに割り当てられているデータタイプを見つける方法を知っている:SQL-Server:bigintの場合はデータ型を変更します

SELECT data_type 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Table_Name' AND COLUMN_NAME = 'ColumnName' 

しかし、私はif文でそれを行う方法を見つけ出すことはできません。私はそれが現在bigintの場合、データ型を変更する必要があります。

表には行がありませんので、データの移動は現時点で問題にはなりません。

私は本当に助けていただきありがとうございます、事前に感謝!

+0

を実行するためには何も存在しませんか? –

+0

今日のヒント:常にデータベースを作成するためのスクリプトがあります。データがないので、そのスクリプトを調整してデータベースを再作成してください。 – jarlh

+0

@ChetanRanpariyaクエリが1つの値を持つ1つの列 "data_type"を返すbigint –

答えて

1

使用する必要はありませんIF条件BIGINTフィルタをWhere節に追加します。データ型がBIGINTされていない場合、この

DECLARE @sql VARCHAR(8000)='' 

SET @sql = (SELECT 'alter table ' + Quotename(TABLE_NAME) 
        + ' alter column ' + Quotename(COLUMN_NAME) 
        + ' int ' + CASE WHEN IS_NULLABLE = 'yes' THEN ' NULL ' ELSE ' NOT NULL ' END 
      FROM INFORMATION_SCHEMA.COLUMNS 
      WHERE TABLE_NAME = 'Table_Name' 
        AND COLUMN_NAME = 'ColumnName' 
        AND DATA_TYPE = 'bigint') 

Exec (@sql) 

のようなものを試してみてください、あなたはあなたがあなたのテーブル名やカラム名で投稿クエリを実行すると、あなたが何を得る出力

+0

私はあなたの答えのいくつかの異なる組み合わせを試しましたが、正しいものを見つけられなかったようですが、それは私にとってはうまくいきませんでしたIFステートメントでそれを行う方法は、前に何が起こったのか分からないが、私はちょうどそれで立ち往生していた。 @Prdp私はちょうど疑問に思っていましたが、あなたが提案したIFや方法でいくつかの利点/短所がありますか?ありがとう! –

関連する問題