int
SQL Serverデータベースがあり、列の1つのタイプをからに変更できることに気付きましたbool
。
そのテーブルにすでに入力されているデータを失うことなく、どうすればそれを行うことができますか?
int
SQL Serverデータベースがあり、列の1つのタイプをからに変更できることに気付きましたbool
。
そのテーブルにすでに入力されているデータを失うことなく、どうすればそれを行うことができますか?
これは、次のコマンドを使用して簡単に実行できます。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)
注:列のサイズがある場合は、サイズも記入してください。
有効な変更である場合。
プロパティを変更できます。
ツール->オプション->デザイナ->テーブルおよびデータベースデザイナ->チェックを外す->テーブルの再作成が必要な変更を保存しないようにします。
これで、テーブルを再作成したり、urレコードを失うことなく、列名を簡単に変更できます。
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)
なぜデータが失われると思いますか?Management Studioに移動して、データ型を変更するだけです。既存の値をbool(ビット)に変換できる場合は、それが行われます。つまり、元のフィールドで「1」がtrueにマップされ、「0」がfalseにマップされる場合は、問題ありません。
列のチェックタイプで列のデータ型を変更します:
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'
*列タイプを文字列から整数に変更するには:(データが正しい形式であることを確認してください)
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
コンパクト版では、日時データ型、つまり(8)のサイズが自動的に取得されるため、フィールドのサイズを設定したり、この操作でエラーを生成したりする必要はありません。
次のクエリを使用して、テーブルフィールドのデータ型を変更できます。OracleDBでも、
ALTER TABLE table_name
MODIFY column_name datatype;
データを失うことなくデータ型を置き換える
alter table tablename modify columnn newdatatype(size);