使用格式1将文本转换为varbinary时出错

时间:2015-08-27 14:14:40

标签: sql-server sql-server-2012 varbinarymax

我有一个数据电子表格,基本上是PART_ID和SPECS。 SPECS字段是一个大字符串,当导入临时表时,存储为NVARCHAR(255)。

示例:

'小部件','这部分需要在切割前加热到400度。'

我们的ERP系统必须考虑的最终表格将SPECS存储为二进制字段。

如果我执行以下操作,我会得到二进制转换:

INSERT INTO ERP_PART_TABLE (PART_ID, SPEC)
SELECT PART_ID, CONVERT(VARBINARY(MAX), SPEC) FROM TEMP_TABLE;

然而,当我进入ERP系统时,我看到的只是第一个角色,我得到一个报告告诉我系统遇到了一些奇怪的角色。

我在过去使用不同转化格式的转化中看到过这种情况,例如:

INSERT INTO ERP_PART_TABLE (PART_ID, SPEC)
SELECT PART_ID, CONVERT(VARBINARY(MAX), SPEC, 1) FROM TEMP_TABLE;

但是,当我尝试使用该格式转换进行选择时,我得到了

  

'消息8114,级别16,状态5,行1错误转换数据类型   nvarchar到varbinary。'

我尝试了TRY_CONVERT(varbinary(max), bits, 1),结果一直是NULL。

我原始文本字段中是否有某些特殊字符,我没有看到? (仅仅是为了测试,我也尝试了selecting CONVERT(VARBINARY(MAX), 'Hello',1),我仍然得到错误。)

SQL * Server 2012。

1 个答案:

答案 0 :(得分:0)

如果您对Null Literal或\0有问题,这可能会有所帮助。下面的代码将删除它们。

SELECT
    PART_ID,
    CONVERT(VARBINARY(MAX), REPLACE(SPEC COLLATE Latin1_General_BIN, NCHAR(0x00) COLLATE Latin1_General_BIN ,'') , 1) 
FROM TEMP_TABLE;