Db2 将BLOB转换为VARCHAR,而不是位的VARCHAR
我选择的表中有一个BLOB字段。此字段数据仅由JSON数据组成 如果我这样做:Db2 将BLOB转换为VARCHAR,而不是位的VARCHAR,db2,db2-luw,Db2,Db2 Luw,我选择的表中有一个BLOB字段。此字段数据仅由JSON数据组成 如果我这样做: Select CAST(JSONBLOB as VARCHAR(2000)) from MyTable -->这将返回位数据格式的VARCHAR值 我只希望它是一个标准字符串或varcher,而不是位格式 这是因为我需要使用JSON2BSON函数将JSON转换为BSON。JSON2BSON接受字符串,但不接受位数据类型的VarChar 这个对话应该很简单 我可以选择作为位数据的VARCHAR。。使用UI手动复制它。
Select CAST(JSONBLOB as VARCHAR(2000)) from MyTable
-->这将返回位数据格式的VARCHAR值
我只希望它是一个标准字符串或varcher,而不是位格式
这是因为我需要使用JSON2BSON函数将JSON转换为BSON。JSON2BSON接受字符串,但不接受位数据类型的VarChar
这个对话应该很简单
我可以选择作为位数据的VARCHAR。。使用UI手动复制它。将其粘贴到select文本并将其转换为BSON。我需要将这个BLOB中的一组数据从JSON迁移到BSON,手动迁移不会很快。我只是想解释一下这个用例应该有多简单
select命令的作用是什么
Select JSON2BSON(CAST(JSONBLOB as VARCHAR(2000))) from MyTable
-->目前这失败了,因为CAST将其(即使它只有文本字符)转换为位数据类型的VARCHAR,而不是标准的VARCHAR
解决这个问题的建议是什么
Windows上的DB2 11。您可以使用converttoclob过程将blob更改为clob,然后就可以了
如果数据是JSON,那么表列首先应该是CLOB
如果数据实际上已经是BSON,将表列设为BLOB可能有意义。您可以使用此函数删除列上的“FOR BIT data”标志
CREATE OR REPLACE FUNCTION DB_BINARY_TO_CHARACTER(A VARCHAR(32672 OCTETS) FOR BIT DATA)
RETURNS VARCHAR(32672 OCTETS)
NO EXTERNAL ACTION
DETERMINISTIC
BEGIN ATOMIC
RETURN A;
END
或者,如果您使用的是DB211.5,那么该函数也将正常工作。