bit字段怎么转为int类型,并且不丢失原有数据?

大风吹过脸颊 2016-04-02 02:07:55
因为之初设计考虑不周全,需要将表中的一个字段由bit转换为int类型,并且不 丢失原有数据

比如 bit是0,那转换为int后,仍然有0,如果是1,转换后仍然是1。谢谢
...全文
964 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2016-04-02
  • 打赏
  • 举报
回复
你的字段原来设置了默认值,先把这个约束删除,在修改类型,然后在设置回来,你可以用下面的SQL一次完成:

DECLARE @cname VARCHAR(1000)
--取得约束对象的名字
SELECT  @cname=dc.name
  FROM sys.default_constraints AS dc INNER JOIN sys.[columns] AS c ON c.column_id=dc.parent_column_id
WHERE OBJECT_NAME(c.[object_id])='TestTable' AND c.name='b'
SELECT @cname
IF LEN(@cname)>0 exec('ALTER TABLE TestTable DROP CONSTRAINT '+@cname)
ALTER TABLE TestTable ALTER COLUMN b INT 
IF LEN(@cname)>0  exec('ALTER TABLE dbo.TestTable ADD CONSTRAINT '+@cname+' DEFAULT 0 FOR b')
大风吹过脸颊 2016-04-02
  • 打赏
  • 举报
回复
引用 1 楼 ch21st 的回复:
直接转就行:

CREATE TABLE TestTable(ID INT IDENTITY(1,1) PRIMARY KEY,b BIT)
GO
INSERT INTO TestTable (b)
SELECT 0
GO 10

ALTER TABLE TestTable ALTER COLUMN b int   ---直接修改类型
SELECT * FROM TestTable AS tt
这样操作,仍然会提示有约束,修改不了,并且默认值还能是0吗?
道素 2016-04-02
  • 打赏
  • 举报
回复
直接转就行:

CREATE TABLE TestTable(ID INT IDENTITY(1,1) PRIMARY KEY,b BIT)
GO
INSERT INTO TestTable (b)
SELECT 0
GO 10

ALTER TABLE TestTable ALTER COLUMN b int   ---直接修改类型
SELECT * FROM TestTable AS tt

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧