2016-11-23 5 views
-1

vb.netで変数として宣言されたクエリがあります。将来の開発/理解のために書式をそのまま維持したいので、宣言レベルでのクリーンアップは機能しません。SQLコマンド文字列のクリーンアップ

私はデータベースへのアプリから送信されたすべてのSQLコマンドの専用テーブルにログインしておくと、ログテーブルに文字列値としてSQL Serverに渡されたら、このクエリは厄介になり
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 
" 

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 & "    " 

ので探していますすべての不要な文字を取り除く方法のために。ちょうどきれいなSQLステートメントを取得するためにそれをクリーンアップするための効率的かつ簡単な方法はありますか? FROMなどのために別々の行などの書式設定は必要ありません。

+1

でこれを解決したTOPを選択10 T.nameテーブル名、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テーブルA ORDER BY TableName ASC " –

+0

これは間違いなく選択肢ですが、将来の開発や理解のためにこのようにフォーマットしておきたいと思います。だから、すべての不要な文字を取り除く方法を探しています。 – Megrez7

+0

これはログなので、おそらく管理者だけがそれを見ています。代わりに、あなたが望むようにテキストを書式設定するログビューアアプリケーションを作成します。サーバーに渡すものを複雑にする必要はありません。 –

答えて

0

私は最終的にあなたがすでにクエリが動作することを確信しているので、文字列=「(SELECT * FROMとして、 `薄暗いクエリのような追加された行せずにそれを割り当てる正規表現

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"