Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tìm kiếm một chuỗi đã cho trong tất cả các trường của toàn bộ lược đồ cho Oracle

" ALL_TAB_COLUMNS "là một systable, có tất cả kiểu dữ liệu cột trong bảng, v.v.

" USER_TAB_COLUMNS "là một systable, có tất cả kiểu dữ liệu cột của bảng, v.v. (chủ sở hữu nào là người dùng hiện tại). (Cảm ơn gia hạn)

Ví dụ:

 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;
    /

truy vấn này sẽ xuất ra table_name '' column_name '' và đếm, nếu bạn có cột và tên bảng độc lập, bạn có thể thay đổi truy vấn dưới dạng IF cột> 0, sau đó viết một truy vấn UNION trong vòng lặp và trả về con trỏ hoặc trả về một bảng,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL:Cách sử dụng hơn 1000 mục bên trong mệnh đề IN

  2. Bắt đầu viết blog cho HTML5 và CSS3

  3. Giá trị cao thứ hai từ bảng của Oracle DB

  4. nhận định dạng ngày thích hợp từ kết quả tìm kiếm SQL (datetime.datetime)

  5. Oracle - hoán vị tổ hợp chuỗi