我有一个获取特定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'? –