是否可以在特定表的每個字段中搜索Oracle中的值列表。要求是從表中提取所有與列表匹配的詳細信息在table.The表的列存放大量的數據,我需要提取數據,爲期6個月的在Oracle中搜索每個字段的特定表中的值列表
0
A
回答
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';
+0
@a_horse_with_no_name:啊,來吧,別挑剔我。有用。表名在DBMS_STATS中不區分大小寫(當然除了「mixedCaseTableNames」)。 –
0
CREATE TABLE large_table
(
col1 VARCHAR2(100)
, col2 VARCHAR2(100)
, col3 VARCHAR2(100)
, col4 VARCHAR2(100)
, col5 VARCHAR2(100)
);
INSERT INTO large_table VALUES ('aa', 'bb', 'cc', 'dd', 'ee');
INSERT INTO large_table VALUES ('ax', 'bx', 'cx', 'dx', 'ex');
INSERT INTO large_table VALUES ('ay', 'by', 'cy', 'dd', 'ee');
CREATE TABLE values_to_search
(
s_value VARCHAR2(30)
);
INSERT INTO values_to_search VALUES ('aa');
INSERT INTO values_to_search VALUES ('bb');
INSERT INTO values_to_search VALUES ('cc');
INSERT INTO values_to_search VALUES ('dd');
INSERT INTO values_to_search VALUES ('ee');
SELECT CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col1, s.s_value) > 0) THEN 1 ELSE NULL END AS s1
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col2, s.s_value) > 0) THEN 1 ELSE NULL END AS s2
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col3, s.s_value) > 0) THEN 1 ELSE NULL END AS s3
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col4, s.s_value) > 0) THEN 1 ELSE NULL END AS s4
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col5, s.s_value) > 0) THEN 1 ELSE NULL END AS s5
FROM large_table l;
/*
1 1 1 1 1
1 1
*/
CREATE TABLE search_result
(
col1 VARCHAR2(100)
, col2 VARCHAR2(100)
, col3 VARCHAR2(100)
, col4 VARCHAR2(100)
, col5 VARCHAR2(100)
);
INSERT INTO search_result
SELECT /*+ PARALLEL */ *
FROM large_table l
WHERE COALESCE
(
CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col1, s.s_value) > 0) THEN 1 ELSE NULL END
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col2, s.s_value) > 0) THEN 1 ELSE NULL END
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col3, s.s_value) > 0) THEN 1 ELSE NULL END
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col4, s.s_value) > 0) THEN 1 ELSE NULL END
, CASE WHEN EXISTS(SELECT 1 FROM values_to_search s WHERE INSTR(l.col5, s.s_value) > 0) THEN 1 ELSE NULL END
) IS NOT NULL
;
-- 2 rows inserted.
/*
aa bb cc dd ee
ay by cy dd ee
*/
有了,我們有沒有錯誤的答案數量的信息。
添加一些條件。希望你創建了一些索引 - 這是一個很好用的列。
請勿掃描整個表格 - 使用日期範圍,例如:逐日或逐月。
相關問題
- 1. 在特定值的所有表中搜索所有字段(Oracle)
- 2. 在Oracle列中搜索特定值
- 3. 如何在Excel的每個工作表中搜索特定列
- 4. 在asp.net web表單中搜索列表框中的特定值
- 5. 在一個字段中搜索可能的值列表
- 6. 在Oracle表中搜索一個值
- 7. 如何在彈性搜索查詢中傳遞特定字段的值列表
- 8. 我想在Oracle的所有表的所有列中搜索特定值11g
- 9. 在ORACLE中搜索特定值
- 10. 如何分別搜索每個文檔字段的特定值?
- 11. 搜索列表中的特定對象
- 12. 在數據表中搜索特定值
- 13. 在字典列表中搜索特定字典的位置
- 14. jQuery在每個表格行中搜索特定的td
- 15. 如何在SQL Server中搜索特定表的列值?
- 16. 在數組列表中搜索特定的文本字符串
- 17. 在django-haystack中指定搜索結果的列表字段
- 18. C# - 在列表中搜索字典的鍵與搜索值
- 19. 搜索具有特定字段值的對象的對象的數組列表
- 20. 檢索列表中的字段值
- 21. MySQL - 搜索每個字段的特定字符
- 22. 如何搜索表中所有列的特定值?
- 23. 在awk中的字段中搜索特定的字符串
- 24. 在字典列表中搜索列表中的字符串
- 25. 在excel中的特定列的每個字段中添加Appostrophe
- 26. 如何根據特定列值在表中進行搜索?
- 27. 我可以在列表<T>中搜索特定值嗎?
- 28. 在Oracle clob列中搜索特定字符串
- 29. 在表中的多個字段中搜索字符串
- 30. Oracle在字符串中搜索所有表的所有列
您可以從這裏開始:[搜索特定值的所有表中的所有字段(Oracle)](http://stackoverflow.com/q/208493/319875) –
要搜索多少列?價值清單要多長時間?什麼是數據類型(數字,字符,日期?) –
嗨wol,character&varchar數據類型和klist大約有120個值 – Sam