SQL スクリプトを使用して、特定のテーブルのビット列を整数に変換しています (このテーブルには、デフォルト値に対するデフォルトの制約がいくつかあります)。
実行時のキャストではなく、テーブルの列を変更する必要があります。これを行うにはどのスクリプトを使用できますか?
SQL スクリプトを使用して、特定のテーブルのビット列を整数に変換しています (このテーブルには、デフォルト値に対するデフォルトの制約がいくつかあります)。
実行時のキャストではなく、テーブルの列を変更する必要があります。これを行うにはどのスクリプトを使用できますか?
を使ってみてくださいCAST(columnName AS INT) AS IntValue
。
例えば
SELECT columnName, CAST(columnName AS INT) AS IntValue
FROM table
または使用できますCONVERT(INT, columnName) AS IntValue
。
UPDATE : テーブルの実際のメタデータを変更する必要がある場合は、まず制約を削除してから列を変更する必要があります。
すなわち
ALTER TABLE [Table] DROP CONSTRAINT [ConstraintName];
GO
ALTER TABLE [Table] ALTER COLUMN [ColumnName] INT;
次に、必要な制約を再作成します。
列のデータ型の変更が心配な場合は、次のように ALTER クエリを使用できます。
ALTER TableName ALTER COLUMN ColumnName INT
それ以外の場合は、表示目的でのみ、CAST
またはCONVERT
関数のいずれかを使用できます。
CAST(columnName AS INT) AS IntegerVal
CONVERT(int, columnName) AS IntValue
最後に、私はそれを機能させることができました:
ALTER TABLE tblname DROP CONSTRAINT DF_tbl_tblname_tblcol
ALTER TABLE tblname ALTER COLUMN tblcol int not null
ALTER TABLE tblname WITH NOCHECK ADD CONSTRAINT [DF_tbl_tblname_tblcol] DEFAULT (0) FOR tblcol
上記の SQL ステートメントを使用して、テーブルの列とそのコンストラクターを変更しました。
SELECT CONVERT(BIT,'False') AS test1 SELECT CONVERT(BIT,'True') AS test2
単純に BIT 列を INT に変更することはできません。したがって、テーブルに新しい整数列を作成し、CAST を使用して新しい整数列を既存のビット値で更新することをお勧めします。そして最後に、テーブルから BIT 列を削除できます。
デフォルトの制約に関連するエラーが発生します。したがって、列のデータ型を変更する前に、その制約を削除する必要があります。
これを試して、このテーブルに基づいてすべての制約を見つけるか(列で適切なデフォルトを見つける必要があります)、SQL Server Management Studio(SSMS)を使用してテーブルのスクリプトを生成すると、デフォルトの制約が定義されます。
select * from sys.all_objects where parent_object_id = object_id('<tablename>')
go
次に、最初に制約を削除してから列を変更し、デフォルトを再度追加します。
alter table bittoint drop constraint DF__bittoint__col2__45D500F0
go
alter table bittoint alter column col2 int
go
alter table bittoint add constraint DF__bittoint__col2__45D500F0 default 0 for col2
go
CAST()
標準のコマンドを使用するだけで、ビット列を整数として抽出できると思います。
SELECT
CAS(Bit_Column AS int) AS Int_Column
FROM
YourTable
ただし、あなたが何を達成しようとしているのか理解できません。テーブルの構造や制約などの詳細を提供すると、より良い答えが得られる可能性があります。