在SQL Server中将数据类型从Varchar更改为Varbinary(max)

6
我想在SQL Server中使用以下查询将varchar更改为varbinary(max):
ALTER TABLE  [dbo].[Attachments]
ALTER COLUMN [Content]  varbinary(max)  NOT NULL

但是这会抛出以下异常:

不允许将数据类型为varchar的隐式转换为varbinary(max)。请使用CONVERT函数运行此查询

在这种情况下我应该改变什么?

3个回答

6

您确定要使用varbinary(max)吗?如果是这样,我认为您需要分步进行:

ALTER TABLE Attachments
ADD Content2 varbinary(max)

UPDATE Attachments
SET Content2 = CONVERT(varbinary(MAX),Content)

ALTER TABLE Attachments
DROP COLUMN Content

sp_RENAME 'Attachments.[Content2]' , '[Content]', 'COLUMN'

根据表的性质,通过select转换可能会更快:

SELECT Content = CAST(Content AS VARBINARY(MAX))
       ,other fields
INTO NewTable
FROM OldTable

然后删除旧表并重命名新表:

DROP TABLE OldTable
GO
SP_RENAME 'NewTable', 'OldTable'

5

您需要分阶段进行:

    ALTER TABLE  [dbo].[Attachments]
    ADD [TempContent]  varbinary(max) 

go

    UPDATE Attachements SET TempContent = CAST(Content as VARBINARY)
go 

    ALTER TABLE  [dbo].[Attachments]
    DROP COLUMN [Content] 

go  
    sp_RENAME 'Attachements.[TempContent ]' , '[Content ]', 'COLUMN'

go

你也可以在SQL Server Management Studio中执行此操作,如果启动分析器,它将显示使用的代码(非常有帮助)。

0

将文件插入数据库时,请使用此方法:

SqlCommand cmd = new SqlCommand("Insert into tblJobSeeker Values('"+txtUserName.Text+"',@Data)",con);
cmd.Parameters.AddWithValue("@Data",Filesize);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接