1. ホーム
  2. sql-server

[解決済み] クエリでカラムを落とさずにデータ型を変更するには?

2022-03-04 14:35:33

質問

データ型がdatetimeのカラムがあります。しかし、今私はそれをdatatype varcharに変換したいと思います。カラムを削除することなく、データ型を変更できますか?もし可能なら、その方法を教えてください。

解決方法は?

ALTER COLUMNが機能しない場合。

希望する変換ができないため、alter columnが失敗することは珍しくありません。この場合、ダミーのテーブルTableName_tmpを作成し、一括Insertコマンドで専用の変換をしてデータをコピーし、元のテーブルをドロップし、tmpテーブルの名前を元のテーブルの名前に変更することで解決することができます。 外部キー制約を削除して再作成する必要がありますが、パフォーマンスのために、おそらくtmpテーブルを満たした後にキーを作成することをお勧めします。

大変な作業だと思いませんか? 実は、そんなことはないんです。

SQL Serverを使用しているのであれば、SQL Server Management Studioに作業をさせることができます!

  • テーブル構造を表示する(テーブル列を右クリックし、"Modify"を選択)。
  • すべての変更を行います(列の変換が不正な場合は、新しい列を追加するだけです - すぐに修正できます)。
  • 変更ウィンドウの背景を右クリックし、[変更スクリプトの生成]を選択します。
  • 修正をキャンセルし (やはり、スクリプトをテストしたいでしょう)、スクリプトを新しいクエリ ウィンドウに貼り付けます。
  • 必要に応じて修正し (たとえば、tmp テーブルの宣言からフィールドを削除しながら変換を追加します)、変換に必要なスクリプトを作成します。