0

'reverse'関数を使用して文字列データ型フィールドの場合と同じ方法でOracleのCLOBデータ型の値を逆にしたいです。そのための組み込みメソッドはありますか。Googleはあまり役に立ちませんでした。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がCLOB00932を取得しました。00000-「一貫性のないデータ型:期待された%sが%sを取得しました」

4

1 に答える 1

3

あなたは最初にconvert clobする必要があります。varchar2次に、を実行し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列名。
  • amount:読み取るバイト数(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 に答える