我是新來的正則表達式,而且我所做的閱讀沒有讓我走得足夠。我想要做的是從SQL查詢中提取行計數輸出。例如,如果以下任一示例都顯示爲輸出,則我想要捕獲'(','0','92'或任何其他數字左側的值從SQL查詢輸出中獲取/存儲行計數的正則表達式
任何正則表達式專家在那裏幫助我請
將被捕獲是從命令行中運行.sql文件輸出:!
更改數據庫上下文爲「MYDB」 -------- --- 0(1 rows affected)
將數據庫上下文更改爲'mydb'----------- 92(1 rows affected)
下面是部分工作的代碼 - 它獲得了可以修剪的前導空格的行數......只是不知道這是否是最好的代碼。
Process execQuery = new Process();
string output = "";
string argumentsToPass = "-S myhost -d mydb -i + sqlFileToExecute;
execQuery.StartInfo.UseShellExecute = false;
execQuery.StartInfo.RedirectStandardOutput = true;
execQuery.StartInfo.FileName = "sqlcmd";
execQuery.StartInfo.Arguments = argumentsToPass;
execQuery.Start();
execQuery.WaitForExit();
output = execQuery.StandardOutput.ReadToEnd();
Match match = Regex.Match(output, @"\s+\d+");
你從哪裏獲得這些行計數?您可以直接從SQL中獲取與查詢匹配的行數,或直接在.NET中受命令影響的行數,因此不需要混淆字符串或正則表達式。告訴我們你的代碼。 – 2013-04-29 15:38:44
@DourHighArch處於正確的軌道 - 正則表達式不是解決這個問題的正確方案。請參閱http://stackoverflow.com/questions/12181583/mysql-return-number-of-rows-matching-query-data – Donut 2013-04-29 18:55:19
@ erman8,你能解釋你試圖達到的結果嗎?你發佈的代碼沒有意義;什麼是'sqlFileToExecute'?如果您想運行SQL文件,可以直接從命令行或快捷方式執行該操作。你爲什麼要創建一個C#程序?如果您需要從C#運行查詢,爲什麼不使用'System.Data.SqlClient.SqlCommand'?你將如何處理查詢中的「行計數輸出」?該代碼拋出了結果,所以我不明白你想要做什麼。 – 2013-04-29 21:05:55