我有一個獲取特定SQL查詢參數的應用程序。如何獲取字符和空格之間的字符
我怎麼會得到之間的字符@和空間?
實施例:Select Name From SomeTable Where [email protected] Group By Name
所以輸出將是:ID
我使用下面的代碼,但它僅@後提取的字符。在上面的例子中,它提取:ID組按名稱。
strParamName = sqlQuery.Substring(sqlQuery.IndexOf('@') + 1);
我有一個獲取特定SQL查詢參數的應用程序。如何獲取字符和空格之間的字符
我怎麼會得到之間的字符@和空間?
實施例:Select Name From SomeTable Where [email protected] Group By Name
所以輸出將是:ID
我使用下面的代碼,但它僅@後提取的字符。在上面的例子中,它提取:ID組按名稱。
strParamName = sqlQuery.Substring(sqlQuery.IndexOf('@') + 1);
這可能是你的情況下錯誤的做法。
您還可以通過Regex
實現這一目標:
string sql = "Select Name From SomeTable Where [email protected] Group By Name";
string result = Regex.Match(sql, "(?<[email protected])[^ ]+").Value;
模式(?<[email protected])[^ ]+
意味着:
(?<[email protected])
- 爲@
性格積極的回顧後,
[^ ]+
- 一個和無限的時間之間的匹配非空白字符()。
謝謝。我選擇這個,因爲他詳細解釋了它。 – Zhyke
嘗試以下操作:
string sqlQuery = "Select Name From SomeTable Where [email protected] Group By Name";
int startIndex = sqlQuery.IndexOf('@') + 1;
int length = sqlQuery.Substring(startIndex).IndexOf(' ');
string strParamName = sqlQuery.Substring(startIndex, length);
這是一種奇怪的,你需要做到這一點。所以我警告你,你可能做錯了什麼。
不管怎麼說,這是一個使用正則表達式的解決方案:
var match = Regex.Match(yourSQLString, "^[email protected](\\w+) .+$");
var result = match.Groups[1].Value;
在我們回答這個問題之前,你能解釋一下爲什麼**你需要這樣做嗎? – mjwills
從你的例子看來,你做錯了什麼。你不應該這樣獲取SQL參數的名字。 –
你的查詢是'string'還是'SQLCommand'? –