我有一个应用程序,它获取某个SQL查询的参数。
如何获取 @ 和 空间 之间的字符?
示例:Select Name From SomeTable Where Id=@ID Group By Name
所以输出结果为: ID
我使用以下代码,但它只在 @ 之后提取字符。在上面的示例中,它提取: ID Group By Name 。
strParamName = sqlQuery.Substring(sqlQuery.IndexOf('@') + 1);
答案 0 :(得分:2)
请尝试以下操作:
string sqlQuery = "Select Name From SomeTable Where Id=@ID Group By Name";
int startIndex = sqlQuery.IndexOf('@') + 1;
int length = sqlQuery.Substring(startIndex).IndexOf(' ');
string strParamName = sqlQuery.Substring(startIndex, length);
答案 1 :(得分:1)
你需要这样做有点奇怪。所以我警告你,你可能做错了什么。
无论如何,这是一个使用正则表达式的解决方案:
var match = Regex.Match(yourSQLString, "^.+@(\\w+) .+$");
var result = match.Groups[1].Value;
答案 2 :(得分:1)
在您的情况下,这可能是错误的方法。
您也可以通过Regex
:
string sql = "Select Name From SomeTable Where Id=@ID Group By Name";
string result = Regex.Match(sql, "(?<=@)[^ ]+").Value;
模式(?<=@)[^ ]+
表示以下内容:
(?<=@)
- @
字符的正向后视,
[^ ]+
- 非空格()字符的一次和无限次匹配。