2011-01-27 14 views
0

私はcourseCodeという列を持つテーブルを持っています。SQL Serverの列変換

現時点では、カラム型はtinyIntですが、これを 'A'を格納する必要があるため、これをvarcharに変換する必要があります。誰もが貧しいデザインのために私の上にジャンプする前に、私はこのテーブルを設計していない...笑。とにかく

現時点では、9

てテーブルに数字のみ0は、次の文のように、このように簡単ですか?

ALTER TABLE dbo.Course 
ALTER COLUMN courseCode VARCHAR(30) 

これは不要な変換の問題を引き起こしますか?私はこれほど多くのことをする必要はありませんでした。クライアントに古いタイプのデータが保存されている場合、列タイプの変換に関するいくつかのベストプラクティスを聞きたいです。ありがとう。

答えて

0

制約またはデフォルトがその列に接続されているかどうかを確認します。デフォルトは、小切手、外部キー、インデックス、ユニーク、主キーの

sp_help mytable 

チェック(mytableのためにあなたの実際のテーブルをサブ) - 何も

任意の列にが取り付けられている場合は、あなたがドロップする必要があります変換後に再作成します。

ALTER TABLE dbo.Course 
ALTER COLUMN courseCode VARCHAR(30) 

の実際の動作は、少なくともTINYINT、100%正確です。ほとんどのものは、サイズに適合している限り、SQL Serverのvarchar *に変換できます。

私はまた、列のサイズを変更するのも大好きです.0-9から1-charアルファに拡張する必要がある場合は、Char(1)を使用してください。

※GUIDのようにいくつかの例外がありますが、varchar(max)を通過してサイズに戻す必要があります。

0

これは、特定のデータ型変換でうまくいくはずです。他はあなたに頭痛を与えるかもしれないが、varcharのかなりまっすぐな上にtinyint ...

0

私はそれが十分だと思う...限り、そのフィールドにリンクされているいくつかの制約があなたをブロックしない限り。あなたのdbのコピーを作成し、そのコピーを試してみてください。

関連する問題