0

特定のテーブルのすべてのフィールドで、Oracle の値のリストを検索することは可能ですか。要件は、テーブルの任意の列のリストと一致するすべての詳細をテーブルから抽出することです。テーブルには膨大な量のデータが保持されており、 6 か月間のデータを抽出する

4

2 に答える 2

0

検索値を保持するテーブルを作成します

CREATE TABLE s (x VARCHAR2(30) PRIMARY KEY) ORGANIZATION INDEX;
INSERT INTO s VALUES ('x');
INSERT INTO s VALUES ('y');
INSERT INTO s VALUES ('z');
COMMIT;
EXEC DBMS_STATS.GATHER_TABLE_STATS(null, 's');

次に、列ごとにチェックする長いクエリを作成します。

SELECT * FROM large_table
WHERE col1 IN (SELECT x FROM s)
   OR col2 IN (SELECT x FROM s)
   ...
   OR colx IN (SELECT x FROM s);

列の数が膨大な場合は、SQL を使用してクエリを作成します。

SELECT 'OR '||column_name||' IN (SELECT x FROM s)' AS line
  FROM user_tab_columns 
 WHERE table_name = 'large_table';
于 2013-06-21T08:41:39.470 に答える