0

我想在 oracle 中反转 clob 数据类型值,就像我们在'reverse'函数的帮助下对字符串数据类型字段所做的那样。有没有内置的方法。谷歌没有太多帮助。在 sql 中做新手不知道这是否可能?我最初认为“反向”函数也可以用于 clob 数据类型字段,但它不起作用,这是我尝试过的示例 -

 drop table test;
 create table test
 (
  name varchar2(4000),
   description clob
  )

insert into test values ('aadinath','I have to reverse a clob data type value')

select reverse(name) from test;

输出= htanidaa

select reverse(name), reverse(description) from test;

输出 = ORA-00932:不一致的数据类型:预期的 CHAR 得到 CLOB 00932。00000 -“不一致的数据类型:预期的 %s 得到 %s”

4

1 回答 1

3

你需要convert clobvarchar2。然后执行reverse.

参考1:

将 CLOB 数据类型转换为 varchar() 的函数是 DBMS_LOB。DBMS_LOB 包提供了对 BLOB、CLOB、NCLOB、BFILE 和临时 LOB 进行操作的子程序。您可以使用 DBMS_LOB 访问和操作 LOB 的特定部分或完整的 LOB。DBMS_LOB 可以读取和修改 BLOB、CLOB 和 NCLOB;它为 BFILE 提供只读操作。

句法:

DBMS_LOB.SUBSTR (lob_loc, amount, offset)
dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte );

参数说明:

  • lob_loc:要读取的 LOB 的定位器,即 CLOB 列名。
  • 数量:要读取的字节数(对于 BLOB)或字符数(对于 CLOB)。
  • offset:从 LOB 开始的偏移量,以字节(对于 BLOB)或字符(对于 CLOB)为单位。

例子:

 CREATE OR REPLACE VIEW temp_view
    AS
    SELECT
    column1, -- datatype numeric
    column2, -- datatype varchar()
    DBMS_LOB.SUBSTR(column3, 2000,1) as column3, -- datatype CLOB
    column4 -- datatype numeric
    FROM temp_table;

注意:在这个例子中,我正在阅读前 2000 个字符。

于 2013-01-05T14:55:15.787 回答