C# を使用して SQL コードを解析する
この記事では、Microsoft.SqlServer.Management.SqlParser.Parser
名前空間を使用して C# で SQL コードを解析する方法について説明します。この名前空間は Microsoft.SqlServer.Management.SqlParser.dll
アセンブリに含まれており、SQL Server に同梱されており、自由に配布できます。
SqlServer.Management.SqlParser.Parser
名前空間は、Transact-SQL (T-SQL) ステートメントを解析し、各ステートメントの構造を表すトークンのシーケンスを生成する機能を提供します。次のメソッド例は、解析プロセスを示しています。
<code class="language-csharp">public static IEnumerable<TokenInfo> ParseSql(string sql) { ParseOptions parseOptions = new ParseOptions(); Scanner scanner = new Scanner(parseOptions); int state = 0, start, end, lastTokenEnd = -1, token; bool isPairMatch, isExecAutoParamHelp; List<TokenInfo> tokens = new List<TokenInfo>(); scanner.SetSource(sql, 0); while ((token = scanner.GetNext(ref state, out start, out end, out isPairMatch, out isExecAutoParamHelp)) != (int)Tokens.EOF) { TokenInfo tokenInfo = new TokenInfo { Start = start, End = end, IsPairMatch = isPairMatch, IsExecAutoParamHelp = isExecAutoParamHelp, Sql = sql.Substring(start, end - start + 1), Token = (Tokens)token }; tokens.Add(tokenInfo); lastTokenEnd = end; } return tokens; }</code>
クラスは、トークン情報のプロパティを含む単純なクラスです。 TokenInfo
は、Tokens
、Microsoft.SqlServer.Management.SqlParser.Parser.Tokens
、TOKEN_BEGIN
などの定数を定義する列挙 (TOKEN_COMMIT
) です。 TOKEN_EXISTS
アセンブリは、別の NuGet パッケージとして利用できるようになりました: Microsoft.SqlServer.Management.SqlParser
https://www.php.cn/link/e6e8bbe351bf19f963820a96543f25db。
以上がMicrosoft.SqlServer.Management.SqlParser 名前空間を使用して C# で SQL コードを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。