Sql server SQL命令字符串清理

Sql server SQL命令字符串清理,sql-server,vb.net,string,Sql Server,Vb.net,String,我在vb.net中将查询声明为变量。我想保持它的格式,因为它是为了将来的开发/更好的理解,所以在声明级别的清理将不起作用 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

我在vb.net中将查询声明为变量。我想保持它的格式,因为它是为了将来的开发/更好的理解,所以在声明级别的清理将不起作用

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
"
我将从应用程序发送到数据库的所有SQL命令记录在专用表中,一旦将此查询作为日志表中的字符串值传递到SQL Server,该查询就会变得混乱:

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语句?不需要设置格式,例如从的单独行等。

我终于用正则表达式解决了这个问题

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"
Query = Regex.Replace(Query, "\s{2,}", " ").Trim

因为您已经确定查询可以工作,所以在不添加诸如Dim query As String=SELECT*FROM SELECT TOP 10 T.name TableName,i.Rows NUMBEROFROWSFROM sys.tables T JOIN sys.SYSINDEX i ON T.OBJECT_ID=i.ID的情况下分配它,其中indid按i.Rows DESC的0,1顺序排列,T.name ASC AS TABLE按TableName ASC排序这肯定是可选的,但是我希望以这种方式将其格式化,以便将来开发/更好地理解。因此,我正在寻找一种方法来去除所有不必要的字符。因为这是一个日志,可能只有管理员会查看它。而是创建一个日志查看器应用程序,该应用程序将按照您想要的方式格式化文本。无需将您传递给服务器的内容复杂化。请回答您的问题,以便更清楚地了解您实际提出的问题,这样人们就不会再浪费时间回答您所写的问题,而只是发现您实际提出了不同的问题。对你要问的问题要清楚简洁。