Ich möchte alle Tabellennamen aus dieser SQL-Teilabfrage extrahieren. Bitte beachten Sie, dass ich durch die Linie diese Linie gerade lese, nicht als eine Zeichenfolge:Extrahieren von Tabellennamen aus mehreren Zeichenfolgen mit Perl regex
from DS_RAN_CORID t1, NAMON_GNS t4, NA_VAL_ROL t6, A_TI_G_V t7, PTSM_TCR t2
left outer join T_TR_COR_LAG t3
on t2.inp_seq = t3.inp_seq and t3.ti_number = t2.ti_number
left outer join OUT_TR_COR t5
on t2.inp_seq=t5.inp_seq and t5.ti_number=t2.ti_number
where t1.inp_seq = t2.inp_seq and t2.ti_number = t6.interval_number and
t1.ti_grp = t7.dm_group and t2.ti_number = t7.interval_number;
Die Tabellen i extrahieren müssen: DS_RAN_CORID/ NAMON_GNS/ NA_VAL_ROL/ A_TI_G_V/ PTSM_TCR/ T_TR_COR_LAG/ OUT_TR_COR/
Ich versuchte dies:
Spiel der
t1.
,t2.
usw., für jeden Buchstaben und jede Ziffer:$string=~m/(\S).\d/gi;
Unter der Annahme, dass mein Code korrekt ist, muss ich mit so etwas wie dies die
t1.
mitTABLE_NAME t1
und extrahieren den Tabellennamen vergleichen:$string=~m/\w+\s+(S)\d/gi;
Du hast zu viele Tische gegriffen. Einige davon stammen vom JOIN und nicht nur von der FROM-Klausel. – CDahn
Verwenden des Moduls SQL: Parser sieht so einfach aus, ich bin neu in Perl und habe noch nie ein Modul benutzt. Kannst du das erklären:% tables, warum benutzt man einen Hash und nicht ein @array? Und warum revers() verwenden? –
@CDahn Ich brauche die Tabelle auch nach JOIN, JOIN ist nach dem FROM, ich brauche alle Tabellen, die diesem Muster entsprechen NAME_OF_THE_TABLE tn, wobei n mindestens 1 ist. –