26

私は SQL データベースに取り組んでおり、「価格」という名前の列があります。データベースが作成されたとき、列「価格」はに設定されていましたが、データベース内のデータを失うことなくNVARCHAR、そのタイプをに変更する必要があります。decimal(18, 2)これは、SQL スクリプトで行う必要があります。

新しい列を作成し、そこにデータを移動し、古い列を削除してから、新しく作成した列の名前を変更することを考えました。

誰かがこれを行う方法の例を手伝ってくれますか? また、文字列を 10 進数に解析する SQL の関数はありますか?

ありがとう

4

4 に答える 4

29

新しい列を 2 回追加する必要はありません。新しい列を更新した後、古い列を削除するだけです。

ALTER TABLE table_name ADD new_column_name decimal(18,2)

update table_name
set new_column_name = convert(decimal(18,2), old_column_name)

ALTER TABLE table_name DROP COLUMN old_column_name

old_column_nameが数値でない場合、 はconvert失敗する可能性があることに注意してください。

于 2012-06-11T09:51:57.483 に答える
4

何かのようなもの

Alter Table [MyTable] Add Column NewPrice decimal(18,2) null

Then

Update [MyTable] Set NewPrice = Convert(decimal(18,2),[Price]) Where Price is not null

上記が失敗した場合は、おかしなことに対処するためにそれを強化する必要があります

満足したら、古い列を Alter Table でドロップし、新しい列の名前をsp_rename

于 2012-06-11T12:17:41.837 に答える
0

これらの変更は、Management Studio を使用して視覚的に行うことができます。次に、[変更スクリプトの生成] ボタンを使用して、行った変更のスクリプトを取得します。何か問題が発生した場合に備えて、元の ddbb のコピーですべてのテストを行うようにしてください。

于 2012-06-11T09:54:08.113 に答える