私はSQL Serverデータベースを持っていて、私はint
からbool
に列の1つの型を変更できることに気付きました。
そのテーブルにすでに入力されているデータを失うことなく、どうすればそれを行うことができますか?
次のコマンドを使って簡単にこれを行うことができます。 0の値は0(BIT = false)になり、それ以外の値は1(BIT = true)になります。
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
もう1つの方法は、BIT
型の新しい列を作成し、それを古い列から入力し、完了したら古い列を削除して新しい列の名前を古い名前に変更することです。そうすれば、変換中に問題が発生した場合でも、すべてのデータが残っているのでいつでも元に戻すことができます。
それが有効な変更であれば。
あなたはプロパティを変更することができます。
[ツール] - > [オプション] - > [設計者] - > [テーブルとデータベースの設計者] - > [選択解除] - >テーブルの再作成が必要な変更を保存しないようにします。
これで、テーブルを再作成したり、レコードを失うことなく、列名を簡単に変更できます。
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
注:列のサイズがある場合は、そのサイズも書いてください。
なぜあなたはデータを失うと思いますか? Management Studioにアクセスしてデータ型を変更するだけです。既存の値がブール値(ビット)に変換されることができればそれはそれをするでしょう。つまり、元のフィールドで「1」がtrueにマッピングされ、「0」がfalseにマッピングされる場合は問題ありません。
t-SQL(MSSQL)を使用している場合このスクリプトを試してください:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
mySQLを使用している場合このスクリプトを試してください:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
oracleを使用している場合このスクリプトを試してください:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
列のチェックタイプを使用して列データタイプを変更します。
IF EXISTS(
SELECT 1
FROM sys.columns
WHERE NAME = 'YourColumnName'
AND [object_id] = OBJECT_ID('dbo.YourTable')
AND TYPE_NAME(system_type_id) = 'int'
)
ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
私にとっては、SQL Server 2016では、私はこれをこのようにします
*列Column1をcolumn2に名前変更する
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
*列の型を文字列からintに変更するには:(データの形式が正しいことを確認してください)
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
コンパクト版では、datetimeデータ型のサイズは自動的に設定されます(8)。そのため、フィールドのサイズを設定してこの操作のエラーを生成する必要はありません。