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

Oracleのスキーマ全体のすべてのフィールドで特定の文字列を検索します

    " ALL_TAB_COLUMNS "はsystableであり、すべてのテーブル列のデータ型などがあります。

    " USER_TAB_COLUMNS "はsystableであり、すべてのテーブル列のデータ型などがあります(所有者は現在のユーザーです)。(Reneに感謝)

    例:

     SET SERVEROUTPUT ON SIZE 100000 -- maybe you have a lot of table and columns
    
        DECLARE
          matches INTEGER;
        BEGIN
          FOR columns IN (SELECT table_name, column_name FROM user_tab_columns where data_type = 'VARCHAR2') LOOP
    
            EXECUTE IMMEDIATE
              'SELECT COUNT(*) FROM '||t.table_name||' WHERE instr('||t.column_name||' , :1) > 0'
              INTO matches
              USING 'What you search';
    
            IF matches > 0 THEN
              dbms_output.put_line( t.table_name ||' '||t.column_name||' '||matches );
            END IF;
    
          END LOOP;
    
        END;
        /
    

    このクエリはtable_name''column_name''を出力し、カウントします。標準の列とテーブルの名前がある場合は、クエリをIF列> 0として変更し、ループ内でクエリUNIONを記述してカーソルを返すか、テーブルを返します。



    1. Laravelの雄弁なwithCount()は、with()よりも遅いと思われます

    2. jsonb_set()を使用したUPDATEは、ネストされた配列内の1つのオブジェクトにのみ影響します

    3. .NETの小数をMySQLに格納するのに最適なフィールド定義は何ですか?

    4. SQL Serverデータベース(T-SQL)にファイルグループを追加する方法