所以我要做的是改变一个表并将列从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)
答案 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)
我认为您必须创建一个新列并在三个单独的更新语句中更新它的值,然后删除旧列并重命名新列