【问题标题】:Convert nvarchar(max) to varbinary(max)将 nvarchar(max) 转换为 varbinary(max)
【发布时间】:2013-08-19 11:13:13
【问题描述】:

有值的表

report nvarchar(max) not null
description nvarchar(max) 

在存储过程中,我想从表中选择值,然后将其转换为 varbinary max。我选择:

select 
    CONVERT(varbinary(max), [report]) as [report], 
    ISNULL(CONVERT(varbinary(max), [description]), '') as [description]
from myTbl

但我得到一个错误:

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

请帮我解决这个问题

【问题讨论】:

  • 您是否按照错误消息的提示进行了操作?供参考:CONVERT function
  • ISNULL(CONVERT(varbinary(max),[description]),$0)。 $0 而不是 ''。

标签: sql sql-server


【解决方案1】:

失败是因为您将描述转换为varbinary,然后尝试将任何空值转换回varchar。您只需将ISNULL 移动到CONVERT 内或将null 时的转换值更改为二进制值。

转换中的 ISNULL

SELECT 
    CONVERT(varbinary(MAX), report), 
    CONVERT(varbinary(max), ISNULL([description], '')) as [description]
FROM myTbl

正确的 ISNULL 值

SELECT 
    CONVERT(varbinary(MAX), report), 
    ISNULL(CONVERT(varbinary(max), [description]), 0x) as [description]
FROM myTbl

如果描述为空,两个版本将产生相同的输出0x。

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 2022-01-06
    • 1970-01-01
    • 2015-08-06
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    相关资源
    最近更新 更多