sql >> データベース >  >> RDS >> Oracle

Oracle検索ビューのテキスト

    これは、使用できる12cで簡単になります

    select *
    from   all_views v
    where  lower(v.text_vc) like '%abc%';
    

    これは、探しているテキスト文字列が最初の4000文字であることを前提としています。 text_lengthが含まれるビューをレポートに含めることもできます。 警告とともに>4000です。

    以前のバージョンでは(または4000文字の制限を回避するために)、次のようなPL/SQLループを試すことができます。

    begin
        dbms_output.put_line('Owner                          View name');
        dbms_output.put_line('------------------------------ -------------------------------');
    
        for r in (
            select v.owner, v.view_name, v.text
            from   all_views v
            where  v.owner <> 'SYS'
        )
        loop
            if lower(r.text) like '%abc%' then
                dbms_output.put_line(rpad(r.owner,31) || r.view_name);
            end if;
        end loop;
    end;
    

    PL / SQLは、SQLを暗黙的に変換しますLONG 32K PL/SQL文字列への値。

    (12.2.0.1.0でのテストでは、これはORA-06502: PL/SQL: numeric or value errorで失敗しました。 selectで カーソルにSYS.DBA_SCHEDULER_RUNNING_JOBSが含まれている場合のステートメント またはSYS."_user_stat" 、テキストが長い他のビューは正常に処理されましたが、理由はわかりません。表示されていない問題がある可能性があります。)



    1. 演算子と>=AND <=の間に:パフォーマンスの違いはありますか?

    2. (SELECT)クエリはいつ計画されますか?

    3. これが重複していないか確認してください

    4. MySQLで指定された位置にあるリストアイテムを見つける方法