Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Db2 将BLOB转换为VARCHAR,而不是位的VARCHAR_Db2_Db2 Luw - Fatal编程技术网

Db2 将BLOB转换为VARCHAR,而不是位的VARCHAR

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手动复制它。

我选择的表中有一个BLOB字段。此字段数据仅由JSON数据组成

如果我这样做:

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,那么该函数也将正常工作。