0

我有一个数据电子表格,基本上是 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*服务器 2012。

4

1 回答 1

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;
于 2015-08-27T14:52:22.447 回答