2017-07-08 125 views
-1

我有一个获取特定SQL查询参数的应用程序。如何获取字符和空格之间的字符

我怎么会得到之间的字符@空间

实施例:Select Name From SomeTable Where [email protected] Group By Name

所以输出将是:ID

我使用下面的代码,但它仅@后提取的字符。在上面的例子中,它提取:ID组按名称

strParamName = sqlQuery.Substring(sqlQuery.IndexOf('@') + 1); 
+5

在我们回答这个问题之前,你能解释一下为什么**你需要这样做吗? – mjwills

+1

从你的例子看来,你做错了什么。你不应该这样获取SQL参数的名字。 –

+0

你的查询是'string'还是'SQLCommand'? –

回答

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]) - 为@性格积极的回顾后,

[^ ]+ - 一个和无限的时间之间的匹配非空白字符()。

+0

谢谢。我选择这个,因为他详细解释了它。 – Zhyke

2

尝试以下操作:

  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); 
1

这是一种奇怪的,你需要做到这一点。所以我警告你,你可能做错了什么。

不管怎么说,这是一个使用正则表达式的解决方案:

var match = Regex.Match(yourSQLString, "^[email protected](\\w+) .+$"); 
var result = match.Groups[1].Value; 
相关问题