Ich habe Liste der Datenbanken und Tabellen wie folgt erhalten:Teradata REGEXP_SIMILAR genaue String-Matching
SELECT TRIM(DatabaseName) || '.' || TRIM(TableName) AS DatabaseTable
FROM DBC.TablesV t1
WHERE TableKind IN ('T','O','V')
Ich möchte jetzt, sie zu dbc.TablesV.RequestText passen eine Hierarchie meiner Datenbankansichten zu bauen. Zuerst habe ich es mit einfachen verbinden wie unten
JOIN DBC.TablesV t2
ON t2.RequestText LIKE '%' || DatabaseTable || '%'
aber leider haben wir Tabellen wie T1010_User und T1010_User_Hist und Datenbanken wie DB_STAGE
und Q_DB_STAGE
so habe ich beschlossen, Räume% auf LIKE-Klausel hinzuzufügen, so dass es LIKE '% ' || DatabaseTable || ' %'
aber dann scheitert es richtige Ergebnisse zu erhalten, weil manchmal Tabellenname name~~POS=HEADCOMP am Ende eines request ist wie folgt: (...) DB_STAGE.TableName;
und manchmal ist es wie folgt aus:
(...)
FROM
DB_STAGE.TableName t1
(...)
entschied ich mich REGEXP_SIMILAR zu verwenden, um sie mit WHEN REGEXP_SIMILAR() = 1
b übereinstimmen ut meine regex-fu schwach ist, so kann ich nicht regex bauen, die so etwas wie tun:
((anything other than a letter/number) or nothing) DatabaseTable ((anything other than a letter/number) or nothing)
Dies ist Hierarchie der Ansichten zu bauen mit Migration von Daten in eine andere Datenbank zu helfen.
Dies ist sehr vereinfachten Fall:
CREATE VOLATILE TABLE test1
(
c0 SMALLINT,
c1 varchar(100)
)ON COMMIT PRESERVE ROWS;
INSERT INTO test1 VALUES(1,'aaa
Q_abcdef.abcdef');
INSERT INTO test1 VALUES(2,' Q_abcdef.abcdef ');
INSERT INTO test1 VALUES(3,'aaa
DQ_abcdef.abcdef ');
INSERT INTO test1 VALUES(4,' S_abcdef.abcdef');
INSERT INTO test1 VALUES(5,'Q_abcdef.abcdefg');
INSERT INTO test1 VALUES(6,' sdfs
Q_abcdef.abcdefg');
INSERT INTO test1 VALUES(DQ_abcdef,' 7.abcdefg');
INSERT INTO test1 VALUES(8,' S_abcdef.abcdefg');
INSERT INTO test1 VALUES(9,'Q_abcdef.abcdef;');
INSERT INTO test1 VALUES(10,' Q_abcdef.abcdef;');
INSERT INTO test1 VALUES(11,'DQ_abcdef.abcdef;');
INSERT INTO test1 VALUES(12,' S_abcdef.abcdef;');
Ich brauche 1 zu entsprechen, 2, 9 und 10 diejenigen, die Zeichenfolge Q_abcdef.abcdef genau haben.
Oh ins Finale durch passende, mein schlecht. 5 und 6 sind falsch, das ist wahrscheinlich was ich will. Vielen Dank (bearbeitete Hauptfrage). –