26

SQL スクリプトを使用して、特定のテーブルのビット列を整数に変換しています (このテーブルには、デフォルト値に対するデフォルトの制約がいくつかあります)。

実行時のキャストではなく、テーブルの列を変更する必要があります。これを行うにはどのスクリプトを使用できますか?

4

8 に答える 8

44

を使ってみてください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;

次に、必要な制約を再作成します。

于 2012-07-26T11:43:00.783 に答える
3

列のデータ型の変更が心配な場合は、次のように ALTER クエリを使用できます。

ALTER TableName ALTER COLUMN ColumnName INT

それ以外の場合は、表示目的でのみ、CASTまたはCONVERT関数のいずれかを使用できます。

CAST(columnName AS INT) AS IntegerVal
CONVERT(int, columnName) AS IntValue
于 2012-07-26T11:52:30.817 に答える
1

最後に、私はそれを機能させることができました:

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 ステートメントを使用して、テーブルの列とそのコンストラクターを変更しました。

于 2012-07-27T07:12:40.367 に答える
1

SELECT CONVERT(BIT,'False') AS test1 SELECT CONVERT(BIT,'True') AS test2

于 2015-04-10T10:39:04.793 に答える
1

単純に BIT 列を INT に変更することはできません。したがって、テーブルに新しい整数列を作成し、CAST を使用して新しい整数列を既存のビット値で更新することをお勧めします。そして最後に、テーブルから BIT 列を削除できます。

于 2012-07-26T11:57:55.883 に答える
0

デフォルトの制約に関連するエラーが発生します。したがって、列のデータ型を変更する前に、その制約を削除する必要があります。

これを試して、このテーブルに基づいてすべての制約を見つけるか(列で適切なデフォルトを見つける必要があります)、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
于 2012-07-26T12:07:48.513 に答える
0

CAST()標準のコマンドを使用するだけで、ビット列を整数として抽出できると思います。

SELECT
  CAS(Bit_Column AS int) AS Int_Column
FROM
  YourTable

ただし、あなたが何を達成しようとしているのか理解できません。テーブルの構造や制約などの詳細を提供すると、より良い答えが得られる可能性があります。

于 2012-07-26T11:45:08.083 に答える