SQL Serverデータベースがあり、列の1つの型をからint
に変更できることに気づきましたbool
。
そのテーブルに既に入力されているデータを失うことなく、どうすればよいですか?
SQL Serverデータベースがあり、列の1つの型をからint
に変更できることに気づきましたbool
。
そのテーブルに既に入力されているデータを失うことなく、どうすればよいですか?
回答:
これは、次のコマンドを使用して簡単に実行できます。0の値は0(BIT = false)に変換され、それ以外の値は1(BIT = true)に変換されます。
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
もう1つのオプションは、タイプの新しい列を作成BIT
し、古い列から入力します。完了したら、古い列をドロップし、新しい列の名前を古い名前に変更します。そうすれば、変換中に何か問題が発生した場合でも、すべてのデータが残っているため、いつでも元に戻すことができます。
NULL
遺骨NULL
、0
なりFalse
、非ゼロ値(1、-1、1999、-987は、...)になりますTrue
。
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
注:列のサイズがある場合は、そのサイズも記入してください。
有効な変更である場合。
プロパティを変更できます。
ツール->オプション->デザイナ->テーブルおよびデータベースデザイナ->チェックボックスをオフ->テーブルの再作成を必要とする変更を保存しないようにします。
これで、テーブルを再作成したり、urレコードを失うことなく、列名を簡単に変更できます。
なぜデータを失うと思いますか?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
次のクエリを使用して、テーブルフィールドのデータ型を変更できます。また、Oracle DBでも、
ALTER TABLE table_name
MODIFY column_name datatype;
データを失うことなくデータ型を置き換える
alter table tablename modify columnn newdatatype(size);