如何从 SQL 查询中提取参数名称

Jet*_*mes 0 c#

我有一个 SQL 查询

select * from table where field1 = :param1 and field2 = :param2
Run Code Online (Sandbox Code Playgroud)

我想从这个字符串中获取参数名称。例如:[param1, param2]

如何使用 C# 语言做到这一点?

Anu*_*wan 5

您可以使用正则表达式来达到此目的。例如,

[:?@](?<Parameter>[\S]+)
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式将有助于检索参数名称。该表达式转换为以 (:?@) 开头的单词,后跟非空白单词 (\S)。

完整代码

var regex = new Regex(@"[:?@](?<Parameter>[\S]+)");
var str = "select * from table where field1 = @param1 and field2 = :param2";
var matchCollection = regex.Matches(str);
var result = matchCollection.Cast<Match>().Select(x => x.Groups["Parameter"].Value);
Run Code Online (Sandbox Code Playgroud)