首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表中的SQL Alter Column From Bit到Int

问表中的SQL Alter Column From Bit到Int
EN

Stack Overflow用户
提问于 2014-06-26 03:53:18
回答 3查看 9.1K关注 0票数 5

所以我要做的是更改一个表,并将列从位更改为整型。尽管当前列中有空值,但我希望将其更改为-1,并且不允许使用空值。由于位仅包含0和1,如何将列更改为INT并将Null值设置为-1

我在想一些类似的事情

代码语言:javascript
复制
ALTER TABLE TABLENAME
ALTER COLUMN COLUMNAME INT SET DEFAULT -1
WHEN NULL THEN CAST(-1 AS INT)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-26 04:08:45

希望下面的代码片段能帮到你。

代码语言:javascript
复制
--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
票数 9
EN

Stack Overflow用户

发布于 2014-06-26 04:13:55

正确的语法是:

代码语言:javascript
复制
ALTER TABLE {TABLENAME} 
ALTER {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

一步一步地做,如下所示

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2014-06-26 03:59:13

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24417384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档