拥有值为
的表格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函数运行此查询。
请帮我解决这个问题
答案 0 :(得分:10)
由于您将描述转换为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
如果description为null,则两个版本都将生成相同的输出0x
。