Sql server SQL命令字符串清理
我在vb.net中将查询声明为变量。我想保持它的格式,因为它是为了将来的开发/更好的理解,所以在声明级别的清理将不起作用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
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排序这肯定是可选的,但是我希望以这种方式将其格式化,以便将来开发/更好地理解。因此,我正在寻找一种方法来去除所有不必要的字符。因为这是一个日志,可能只有管理员会查看它。而是创建一个日志查看器应用程序,该应用程序将按照您想要的方式格式化文本。无需将您传递给服务器的内容复杂化。请回答您的问题,以便更清楚地了解您实际提出的问题,这样人们就不会再浪费时间回答您所写的问题,而只是发现您实际提出了不同的问题。对你要问的问题要清楚简洁。