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