2016-08-04 6 views
0

ich habe eine Ansicht und ich möchte sein inneres Auswahlteil, das SELECT 12345 in meinem Fall ist.Was ist der beste Weg, einen inneren Auswahlteil aus einem von sp_helptext bereitgestellten View-Create-Skript zu erhalten?

Meine Ansicht ist, unten wie:

CREATE VIEW myView 
AS 
SELECT 12345 

Wenn ich sp_helptext verwenden, gibt sie mir alle Skript VIEW einschließlich CREATE ...

Wie kann ich nur innere wählen Teil davon?

Verwendung von regulärem Ausdruck? Wenn das so ist, wie? Wenn nicht, was würden Sie mir vorschlagen?

Vielen Dank im Voraus

+1

Warum brauchen Sie eine Abfrage diese abzurufen? Hoffentlich schreiben Sie keinen Code, der eine Ansicht regelmäßig sezieren muss. –

+0

Ich werde es in einer Join-Anweisung wie INNER JOIN (SELECT 12345) verwenden. Es kann nicht wie INNER JOIN myView verwendet werden. Weil mein View-Skript komplex ist und einige Texte enthält, die ich wie {0} ersetzen möchte. Ich muss View-Skript nehmen, Werte ersetzen und es in einer verbundenen endgültigen Abfrage verwenden. –

+0

Klingt für mich wie Sie nur Ihre neue Abfrage schreiben müssen und nicht versuchen, mit der View-Definition mit Replace-Anweisungen und so weiter zu verbinden. Das klingt nach einer sehr spröden Implementierung. –

Antwort

0

Dies könnte helfen:

USE myDB 
GO 

SELECT SUBSTRING(definition,(CHARINDEX('AS',definition)+2),LEN(definition)) FROM sys.sql_modules WHERE object_id = OBJECT_ID('myView') 
+0

Der View-Name selbst kann AS-Zeichen enthalten, daher klingt das nicht nach einer guten Idee: S –

+0

Ja, das stimmt. Kann nicht als generische Lösung betrachtet werden. Danke, dass du darauf hingewiesen hast. –