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

请帮我解决这个问题

4

1 回答 1

12

发生故障是因为您将 description 转换为varbinary,但随后尝试将任何空值转换回 a varchar。您只需要在 null 到二进制值时移动ISNULLCONVERT更改转换值。

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如果描述为空,两个版本将产生相同的输出。

于 2013-08-19T11:23:52.820 回答