【问题标题】:Update table inserting VARBINARY data更新插入 VARBINARY 数据的表
【发布时间】:2012-02-19 18:26:00
【问题描述】:

当我运行 sql 查询时,我得到了这样的结果:

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

我要插入的数据看起来像

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'

这个查询怎么做?

查询看起来像:

UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12

【问题讨论】:

    标签: sql-server sql-server-2000


    【解决方案1】:

    从 SQL Server 2005 开始,CONVERT 可以满足您的需求:

    CONVERT(varbinary(2000), '00001340132401324...', 2)
    

    二进制转换的样式有:

    • 0:原始数据,ascii 代码点变成二进制字节,UTF-16 代码点变成两个字节。
    • 1:十六进制格式,前缀为'0x'
    • 2:十六进制格式,不带'0x'前缀

    用于将字符转换为格式 0 的二进制:

    • charvarchar 数据(例如 ASCII、ISO-8859-1)变成二进制字节。对于单字符编码,这意味着每个字符一个字节。
    • ncharnvarchar 数据(即 UTF-16)分别变为两个字节,采用大端格式,因此 N'ABC' 变为 0x410042004300

    用于将格式 1 和 2 的十六进制转换为二进制:

    • 每两个输入的十六进制数字变成一个字节
    • 如果输入的十六进制无效,则会发生错误
    • 不允许使用空格和标点符号

    参见 MSDN:

    如果您需要 UTF-8,请在此处查看我对 UDF 的回答,它将文本转换为 UTF-8:

    【讨论】:

    • 本。请编辑您的答案,以便我投票。上周我一定是点击了错误的按钮……我的本意不是投反对票。
    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多