将nvarchar(max)转换为varbinary(max)

5

有一张包含数值的表格

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 函数运行此查询。

请帮我解决这个问题。

2
你按照错误信息的建议做了吗?参考:CONVERT 函数 - Jamiec
1
ISNULL(CONVERT(varbinary(max),[description]),$0). $0代替''。 - bummi
1个回答

12

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

在 CONVERT 中使用 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


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