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

时间:2013-08-19 11:13:13

标签: sql sql-server

拥有值为

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

请帮我解决这个问题

1 个答案:

答案 0 :(得分:10)

由于您将描述转换为varbinary,然后尝试将任何空值转换回varchar,因此发生了失败。您只需要在ISNULL内移动CONVERT或在null时将转换值更改为二进制值。

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

如果description为null,则两个版本都将生成相同的输出0x