217

intSQL Serverデータベースがあり、列の1つのタイプをからに変更できることに気付きましたbool

そのテーブルにすでに入力されているデータを失うことなく、どうすればそれを行うことができますか?

4

11 に答える 11

360

これは、次のコマンドを使用して簡単に実行できます。0の値はすべて0(BIT = false)に変換され、それ以外の値は1(BIT = true)に変換されます。

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

もう1つのオプションは、タイプの新しい列を作成しBIT、古い列から入力し、完了したら、古い列を削除して、新しい列の名前を古い名前に変更することです。そうすれば、変換中に問題が発生した場合でも、すべてのデータが残っているため、いつでも戻ることができます。

于 2011-02-27T21:18:12.640 に答える
27
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

注:列のサイズがある場合は、サイズも記入してください。

于 2015-07-08T03:09:21.660 に答える
22

有効な変更である場合。

プロパティを変更できます。

ツール->オプション->デザイナ->テーブルおよびデータベースデザイナ->チェックを外す->テーブルの再作成が必要な変更を保存しないようにします。

これで、テーブルを再作成したり、urレコードを失うことなく、列名を簡単に変更できます。

于 2016-07-25T06:50:41.523 に答える
11

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)
于 2017-09-21T13:32:37.057 に答える
8

なぜデータが失われると思いますか?Management Studioに移動して、データ型を変更するだけです。既存の値をbool(ビット)に変換できる場合は、それが行われます。つまり、元のフィールドで「1」がtrueにマップされ、「0」がfalseにマップされる場合は、問題ありません。

于 2011-02-27T21:19:59.343 に答える
4

[ツール]-[オプション]-[デザイナー]-[テーブルとデータベースのデザイナー]に移動し、[保存を防止する]オプションのチェックを外しますここに画像の説明を入力してください

于 2017-05-31T06:05:34.623 に答える
4

列のチェックタイプで列のデータ型を変更します:

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
于 2019-02-26T09:13:09.143 に答える
2

私にとって、SQL Server 2016では、このようにします

*列Column1の名前をcolumn2に変更するには

EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'

*列タイプを文字列から整数に変更するには:(データが正しい形式であることを確認してください

ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 
于 2019-01-10T12:55:45.897 に答える
0

コンパクト版では、日時データ型、つまり(8)のサイズが自動的に取得されるため、フィールドのサイズを設定したり、この操作でエラーを生成したりする必要はありません。

于 2016-07-07T07:34:13.363 に答える
-3

次のクエリを使用して、テーブルフィールドのデータ型を変更できます。OracleDBでも、

ALTER TABLE table_name
MODIFY column_name datatype;
于 2017-06-20T05:25:07.130 に答える
-5

データを失うことなくデータ型を置き換える

alter table tablename modify columnn  newdatatype(size);
于 2017-03-21T05:00:49.313 に答える