Ich verwende SQLServer 2014.
Ich habe eine Tabelle tblControl
mit einer Spalte SourceTableName
. Diese Spalte enthält SQL-Anweisungen, die wie folgt aussehen:
SELECT * FROM OPENQUERY(test, 'select * from ABC.tbl1')
Wie führe ich einen SELECT
on durch, tblControl
um nur Daten nach dem 2. "von" abzurufen? Wenn Sie das obige verwenden, wäre das gewünschte Ergebnis:
ABC.tbl1
Folgendes habe ich vergeblich versucht:
SELECT
SUBSTRING([SourceTableName], CHARINDEX('from', [SourceTableName]), LEN([SourceTableName])),
PARSENAME(REPLACE([SourceTableName], 'from', ''), 1),
SUBSTRING([SourceTableName], LEN([SourceTableName]) -CHARINDEX('from', REVERSE([SourceTableName])) + 2, LEN([SourceTableName]))
FROM
tblControl
Was vermisse ich?
Ein verketteter Anruf, CHARINDEX
der Sie nah an das bringt, was Sie wollen:
WITH yourTable AS (
SELECT 'SELECT * FROM OPENQUERY(test, ''select * from ABC.tbl1'')' AS [Source TableName]
)
SELECT
[SourceTableName],
SUBSTRING([SourceTableName],
CHARINDEX('from',
LOWER([SourceTableName]),
CHARINDEX('from', LOWER([SourceTableName])) + 4) + 5,
LEN([SourceTableName])) AS output
FROM yourTable;
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen