表中的SQL Alter列从Bit到Int

时间:2014-06-25 19:53:18

标签: sql-server bit alter-table

所以我要做的是改变一个表并将列从BIT更改为INT。虽然目前在列中有空值我想更改为-1并且不允许null。由于BIT只保存0和1,我如何将列更改为INT并将Null值设置为-1

我正在思考

的内容
ALTER TABLE TABLENAME
ALTER COLUMN COLUMNAME INT SET DEFAULT -1
WHEN NULL THEN CAST(-1 AS INT)

3 个答案:

答案 0 :(得分:5)

希望以下代码段可以帮助您。

--Created table for testing
CREATE TABLE Test(COl Bit)

--Insertint values
INSERT INTO Test VALUES(0)
INSERT INTO Test VALUES(NULL)
INSERT INTO Test VALUES(1)

--Change the column type
ALTER TABLE Test ALTER COLUMN COL INT

-- Update null values to -1
UPDATE Test SET COL = ISNULL(COL,-1) WHERE COL is NULL

-- Changing the column to not null
ALTER TABLE Test ALTER COLUMN COL int NOT NULL

答案 1 :(得分:1)

正确的语法是:

ALTER TABLE {TABLENAME} 
ALTER {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

如下所示一步一步地进行

create table test2(id int not null identity primary key ,
 col bit);


ALTER TABLE test2
ALTER COLUMN col INT NULL --Alter to change the type to INT

alter table test2
add constraint dflt default -1 for col  --Alter to create a default value

答案 2 :(得分:0)

我认为您必须创建一个新列并在三个单独的更新语句中更新它的值,然后删除旧列并重命名新列