Ich habe schon öfters einen Wert gesucht, von dem ich nicht genau wusste in welcher Tabelle ich ihn suchen sollte.
Dazu habe ich dann mal untenstehende SQL zusammengebastelt (Vor allem Google war das, sie liegt deutlich über meinem Können und teilweise auch über meinem Verständnis ).
Vielleicht hilft's jemandem weiter.
Und... vielleicht hat jemand noch Ideen, wie man es weiter verbessert, z.B. meine TODO's umsetzt...
--PseudoFull text search
--from https://stackoverflow.com/questions/75172712/how-to-find-a-value-in-all-tables-on-firebird--TODO:Spalte mit SQL zum Daten zeigen ist noch nicht wie gewünscht...
execute block
returns (
table_name varchar(63),
table_description varchar(128),
column_name varchar(63),
show_result varchar(99))as
declare search_value varchar(30)='LBM';--TODO:Wert abfragen im Stil von :searchterm statt Hartcodiert--declare search_condition varchar(30)='=';
declare search_condition varchar(30)='containing';--TODO:Wert abfragen im Stil von :searchterm statt Hartcodiert
declare has_result boolean;beginforselect
trim(r.rdb$relation_name), substring(trim(r.rdb$description)from1for127), trim(f.rdb$field_name),'select * from '|| trim(r.rdb$relation_name)||' where '|| trim(f.rdb$field_name)||' like '||'search_value'-- TODO: search_condition & search_value sind an der Stelle nicht definiert...from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr isnulland(r.rdb$system_flag isnullor r.rdb$system_flag =0)
order by r.rdb$relation_name, f.rdb$field_position
into:table_name
,:table_description
,:column_name
,:show_result
dobegin
execute statement ('select exists(select * from "'|| table_name ||'" where "'|| column_name ||'" '|| search_condition ||' ?) from rdb$database')(search_value)into has_result;if(has_result)then
suspend;when any dobegin/* value not comparable with varchar, skip */endendend
Frage
Thomas Rogenmoser
Ich habe schon öfters einen Wert gesucht, von dem ich nicht genau wusste in welcher Tabelle ich ihn suchen sollte.
Dazu habe ich dann mal untenstehende SQL zusammengebastelt (Vor allem Google war das, sie liegt deutlich über meinem Können und teilweise auch über meinem Verständnis ).
Vielleicht hilft's jemandem weiter.
Und... vielleicht hat jemand noch Ideen, wie man es weiter verbessert, z.B. meine TODO's umsetzt...
Link zu diesem Kommentar
Auf anderen Seiten teilen
1 Antwort auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.