提问者:小点点

将nvarchar(最大值)转换为varbinary(最大值)


具有值的表

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

在存储过程中,我想从表中选择值,然后将其转换为var二进制最大值。我选择:

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

但是我得到一个错误:

不允许从数据类型varchar隐式转换为var二进制(max)。使用CONVERT函数运行此查询。

请帮我解决这个问题


共1个答案

匿名用户

发生故障的原因是您将描述转换为varbinary,但随后尝试将任何空值转换回varchar。您只需将ISNULL移动到CONVERT中,或者将null时的转换值更改为二进制值。

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

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