varchar型カラムをint型に変換:SQL Serverで数値データの精度向上
SQL Serverで数値型カラムをvarchar型からint型に変更する方法
SQL Serverで、数値型データを含むカラムのデータ型をvarchar型からint型に変更するには、いくつかの方法があります。
方法
- ALTER TABLE ステートメント
ALTER TABLE テーブル名 ALTER COLUMN カラム名 int;
この方法は、既存のカラムのデータ型を変更する最も簡単な方法です。 ただし、カラム内のデータがすべて有効な整数であることを確認する必要があります。
- UPDATE ステートメント
UPDATE テーブル名
SET カラム名 = CAST(カラム名 AS int);
この方法は、カラム内のデータの一部が有効な整数ではない場合に使用できます。 ただし、変換処理に時間がかかる可能性があります。
CREATE TABLE 新しいテーブル名 (
カラム名 int,
...
);
INSERT INTO 新しいテーブル名 (カラム名, ...)
SELECT カラム名, ...
FROM 旧いテーブル名;
この方法は、既存のテーブルの構造を変更せずに、新しいテーブルを作成する方法です。
注意事項
- データ型を変更する前に、必ずデータベースをバックアップしてください。
- カラム内のデータがすべて有効な整数であることを確認してください。
- 変換処理によって、データの精度が失われる可能性があります。
補足
- 上記の方法は、SQL Server 2017以降で動作します。
- 古いバージョンの SQL Server を使用している場合は、別の方法を使用する必要があります。
USE AdventureWorks2019;
ALTER TABLE Person.Contact
ALTER COLUMN PhoneNumber int;
このコードは、AdventureWorks2019
データベースの Person.Contact
テーブルの PhoneNumber
カラムのデータ型を int
に変更します。
USE AdventureWorks2019;
UPDATE Person.Contact
SET PhoneNumber = CAST(PhoneNumber AS int);
USE AdventureWorks2019;
CREATE TABLE NewContacts (
ContactID int,
FirstName varchar(50),
LastName varchar(50),
PhoneNumber int
);
INSERT INTO NewContacts (ContactID, FirstName, LastName, PhoneNumber)
SELECT ContactID, FirstName, LastName, PhoneNumber
FROM Person.Contact;
このコードは、AdventureWorks2019
データベースに NewContacts
という新しいテーブルを作成し、Person.Contact
テーブルのデータをコピーします。 新しいテーブルの PhoneNumber
カラムのデータ型は int
です。
注意
SQL Serverで数値型カラムをvarchar型からint型に変更するその他の方法
- SSMS を使用
SQL Server Management Studio (SSMS) を使用して、カラムのデータ型を変更することができます。 詳細については、以下の手順を参照してください。
- SSMS を開き、データベースに接続します。
- オブジェクト エクスプローラーで、変更するテーブルを選択します。
- テーブルを右クリックし、「デザイン」を選択します。
- デザイン ビューで、変更するカラムを選択します。
- プロパティ ウィンドウで、「データ型」プロパティを int に変更します。
- 「保存」をクリックします。
- T-SQL スクリプトを使用
- T-SQL エディターで、以下のスクリプトを開きます。
ALTER TABLE テーブル名 ALTER COLUMN カラム名 int;
- スクリプト内の
テーブル名
とカラム名
を実際の値に変更します。 - スクリプトを実行します。
- より複雑な要件がある場合は、別の方法を使用する必要があるかもしれません。
sql-server types