转换中的数据类型不一致

Inconsistent datatype in cast

我有以下 SQL 查询,我必须将其转换为 Oracle 查询:

select binaryPhotoNumber, cast(cast(PhotoInfo as varbinary(max)) as varchar(max)) as PhotoInfo
From ProfilePictures
Where profilesourceid = 10

我尝试将其转换为 Oracle,结果如下

select binaryPhotoNumber, cast(cast(PhotoInfo as BLOB) as CLOB) as PhotoInfo
From ProfilePictures
Where profilesourceid = 10

但是,我遇到了一个错误

Inconsistent datatypes: expected -got BLOB.

DDL:

binaryPhotoNumber is Number

PhotoInfo is BLOB

profilesourceid is Number 

现在我知道 PhotoInfo 是 BLOB,所以我将查询更改为以下内容

select binaryPhotoNumber, cast(PhotoInfo as CLOB) as PhotoInfo
    From ProfilePictures
    Where profilesourceid = 10

现在它给了我

Inconsistent datatypes: expected -got CLOB.

因为它是 XML 数据,您可以将其转换为 XML 类型:

xmltype(photoinfo, 0)

要使用数据库字符集,或指定字符集(可能是 UTF-8,但可能不是),您可以指定:

xmltype(photoinfo, nls_charset_id('UTF8'))

一旦将其作为该数据类型,您就可以将其作为 XML 进行操作,并具有 XMLQuery 和 XMLTable (read more) 等功能;或者将整个事情看作一个 CLOB,你可以这样做:

xmltype(photoinfo, nls_charset_id('UTF8')).getclobval()