转换中的数据类型不一致
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()
我有以下 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()