データベーステーブルにSQLのレコードがある場合、属性のデータ型を変更できますか?
Microsoft ManagementStudio2008を使用しています。発生するエラーは次のとおりです。**データ型nvarcharをfloatに変換中にエラーが発生しました。****
データベーステーブルにSQLのレコードがある場合、属性のデータ型を変更できますか?
Microsoft ManagementStudio2008を使用しています。発生するエラーは次のとおりです。**データ型nvarcharをfloatに変換中にエラーが発生しました。****
つまりalter column
、コマンドを使用できるのは、変更されたデータ型が新しく変更されたデータ型と互換性がある場合のみです。また、トランザクションで行うことをお勧めします。
例:以下のスクリプトを使用して、列をvarchar(50)からnvarchar(200)に変更できます。
alter table TableName
alter column ColumnName nvarchar(200)
編集:列タイプの変更中に投稿されたエラーについて。
**データ型nvarcharをfloatに変換中にエラーが発生しました。****
1つの方法は、新しい列を作成し、すべての適切な(変換可能で互換性のある)レコードを新しい列に変換することです。その後、変換されない不良レコードをクリーンアップし、古い列を削除して、新しく追加して入力した列の名前を元の名前に戻します。重要:最初に、このすべての操作にテスト環境を使用してください。通常、プロダクションテーブルで遊ぶことは、物事を台無しにするための悪い習慣になります。
同様のSE投稿に関するその他の議論を探すための参照:
明らかに、新しいデータ型へのデフォルトの変換はありません。1つの解決策は、要求されたタイプで2番目の列を作成し、独自の変換関数を作成することです。これが完了したら、最初の列を削除し、2番目の列の名前を同じ名前に変更します。
考慮事項:テーブルの大きさ。次に、alter table
構文を使用します。変更するデータ型がわからないため、たとえば
列を変更:
Alter Table [yourTable] Alter column [yourColumn] varchar(15)
アイデアを探すための投稿:巨大なテーブルの列タイプを変更する、データを失うことなくSQLデータベースの列データ型を変更する方法