【问题标题】:How to reverse value of a clob data type in oracle sql?如何在 oracle sql 中反转 clob 数据类型的值?
【发布时间】:2012-12-19 19:19:40
【问题描述】:

我想在 oracle 中反转 clob 数据类型值,就像我们在“reverse”函数的帮助下对字符串数据类型字段所做的那样。有没有内置的方法。谷歌没有多大帮助。作为一个新手在sql中甚至不知道是否有可能?我一开始以为 'reverse' 函数也可以用于 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”

【问题讨论】:

    标签: sql oracle11g clob


    【解决方案1】:

    你需要先convertclobvarchar2。然后执行reverse

    Reference 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 个字符。

    【讨论】:

      猜你喜欢
      • 2017-05-22
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 2019-08-13
      • 2015-06-26
      相关资源
      最近更新 更多