2016-11-23 18 views
-1

Ich habe eine Abfrage als eine Variable in vb.net deklariert. Ich möchte es so formatiert behalten, wie es für die zukünftige Entwicklung/besseres Verständnis ist, so dass Bereinigung auf Deklarationsebene nicht funktioniert.SQL-Befehl Zeichenfolge bereinigen

Dim query As String = " 
SELECT * FROM (
SELECT TOP 10  T.name TableName, i.Rows NumberOfRows 
FROM  sys.tables T 
JOIN  sys.sysindexes I ON T.OBJECT_ID = I.ID 
WHERE  indid IN (0,1) 
ORDER BY i.Rows DESC, T.name ASC 
) AS TableA 
ORDER BY TableName ASC 
" 

Ich halte log in dedizierten Tabelle aller SQL-Befehle von App-Datenbank und diese Abfrage wird chaotisch einmal auf SQL Server als String-Wert in Log-Tabelle übergeben gesendet:

vbCrLf & "    SELECT * FROM (" & vbCrLf & "    SELECT TOP 10  T.name TableName, i.Rows NumberOfRows" & vbCrLf & "    FROM  sys.tables T" & vbCrLf & "    JOIN  sys.sysindexes I ON T.OBJECT_ID = I.ID" & vbCrLf & "    WHERE  indid IN (0,1)" & vbCrLf & "    ORDER BY i.Rows DESC, T.name ASC" & vbCrLf & "    ) AS TableA" & vbCrLf & "    ORDER BY TableName ASC" & vbCrLf & "    " 

So suchen bin für eine Möglichkeit, alle unnötigen Zeichen loszuwerden. Gibt es eine effiziente und einfache Möglichkeit, es aufzuräumen, um nur eine saubere SQL-Anweisung zu erhalten? Es sind keine Formatierungen wie separate Zeilen für FROM usw. erforderlich.

+1

Da Sie bereits sicher sind, dass die Abfrage funktioniert, weisen Sie es ohne die zusätzlichen Linien wie 'Dim Abfrage As String =„SELECT * FROM (TOP SELECT 10 T.name TableName, i.Rows NumberOfRows FROM sys.tables T JOIN sys.sysindexes I ON T.OBJECT_ID = I.ID WHERE indid IN (0,1) ORDER BY i.Rows DESC, T.name ASC) AS TableA ORDER BY Tabellenname ASC "' –

+0

Das ist definitiv eine Option, aber ich möchte es für zukünftige Entwicklungen/besseres Verständnis so formatiert behalten. Ich suche nach einer Möglichkeit, alle unnötigen Charaktere loszuwerden. – Megrez7

+0

Da dies ein Protokoll ist, werden wahrscheinlich nur Admins es betrachten. Erstellen Sie stattdessen eine Log-Viewer-App, die den Text so formatiert, wie Sie es möchten. Sie müssen nicht komplizieren, was Sie an den Server weitergeben. –

Antwort

0

ich habe endlich gelöst dies mit regex

Query = Regex.Replace(Query, "\s{2,}", " ").Trim 
0
Dim query As String ="SELECT * FROM (" & vbcrlf & 
     " SELECT TOP 10 T.name TableName, i.Rows NumberOfRows" & vbcrlf & 
     " FROM sys.tables T" & vbcrlf & 
     " JOIN sys.sysindexes I ON T.OBJECT_ID = I.ID" & vbcrlf & 
     " WHERE indid IN (0,1)" & vbcrlf & 
     " ORDER BY i.Rows DESC, T.name ASC" & vbcrlf & 
     ") AS TableA" & vbcrlf & 
     " ORDER BY TableName ASC"