【问题标题】:Change Data Type Varchar To Varbinary(max) In SQL Server在 SQL Server 中将数据类型 Varchar 更改为 Varbinary(max)
【发布时间】:2013-06-16 16:03:22
【问题描述】:

我想用这个查询在 SQL Server 中将 varchar 更改为 varbinary(max)

ALTER TABLE  [dbo].[Attachments]
ALTER COLUMN [Content]  varbinary(max)  NOT NULL

但这会引发以下异常:

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

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

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您确定要使用 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 Content = CAST(Content AS VARBINARY(MAX))
           ,other fields
    INTO NewTable
    FROM OldTable
    

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

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

    【讨论】:

      【解决方案2】:

      您需要分阶段进行流程:

          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 中执行此操作,如果您启动分析器,它会向您显示它使用的代码(总是有帮助的)

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2013-01-10
          • 1970-01-01
          • 2015-06-18
          • 2011-11-24
          • 2010-10-13
          • 2013-11-12
          • 1970-01-01
          • 2022-01-06
          • 2020-03-09
          相关资源
          最近更新 更多