使用場景:知道某個字段的值(例如:“張三”),需要查詢在其他某個表中有沒有相同的值,常用于搜索關聯(lián)表等。
對于oracle數(shù)據(jù)庫:
Pl\sql沒有搜索功能僵驰,需借助存儲過程,完成搜索唁毒,搜索結果是將表名插入到一個表中蒜茴。
[if !supportLists]1、[endif]創(chuàng)建臨時表:
create table TMPTABLE
(
??NAME VARCHAR2(500)
);
[if !supportLists]2浆西、[endif]存儲過程如下
create or replace procedure QUERY_KEY
(
?keyword in varchar2
)
as
?v_SQLStatement varchar2(300);
?v_startRecord Number;
begin
?FOR reInfo IN (select table_name from user_tables) LOOP
?FOR colInfo IN (SELECT column_name, DATA_TYPE FROM all_tab_cols WHERE table_name=reInfo.table_name) LOOP
?IF (colInfo.DATA_TYPE='VARCHAR2') THEN
?v_SQLStatement := 'select count(*) from '|| reInfo.table_name || ' where ' || colInfo.column_name || ' = ''' || keyword|| '''';
-- dbms_output.put_line(v_SQLStatement);
?execute immediate v_SQLStatement into v_startRecord;
?IF(v_startRecord > 0) THEN
-- ?dbms_output.put_line(reInfo.table_name);
insert into TMPTABLE values (reInfo.table_name);
?commit;
?END IF;
?END IF;
?END LOOP;
?END LOOP;
END QUERY_KEY;
[if !supportLists]3粉私、[endif]在pl\sql中command窗口執(zhí)行如下命令,其中“123”為要查詢的數(shù)據(jù)
[if !supportLists]4近零、[endif]然后在TMPTABLE中即可查詢到包含此字段的數(shù)據(jù)
對于mysql數(shù)據(jù)庫:
選擇數(shù)據(jù)庫诺核,右鍵“在數(shù)據(jù)庫中查找...”,在下方“查找”輸入需要查詢的字段久信,點擊查找窖杀,右側即顯示查找結果