Я должен был бы проанализировать частичные SQL-запросы (это для инструмента аудита Внедрения SQL). Например,
'1' AND 1=1--
Должен разломать на маркеры как
[0] => [SQL_STRING, '1']
[1] => [SQL_AND]
[2] => [SQL_INT, 1]
[3] => [SQL_AND]
[4] => [SQL_INT, 1]
[5] => [SQL_COMMENT]
[6] => [SQL_QUERY_END]
Их любой, по крайней мере, лексические анализаторы для SQL, что я основываю мой прочь или любые хорошие инструменты как бизон для C# (хотя я не записал бы свою собственную грамматику, поскольку я должен поддерживать больше всего если не вся грамматика MySQL 5),
Кажется, есть несколько хороших парсеров.
В этой статье SO есть пример с использованием MS's Entity Framework:
Parsing SQL code in C#
Кажется, кто-то еще сделал свой собственный и выложил его на Code Project:
http://www.codeproject.com/KB/dotnet/SQL_parser.aspx
Лично я бы выбрал решение Entity Framework, поскольку оно было создано и поддерживается MS, но также, вероятно, тесно связано с SQL Server. Поскольку вы рассматриваете MySQL, вы, возможно, захотите выбрать пользовательское решение на Code Project, так как я уверен, что вы сможете вписать больше пользовательских решений, как того требует грамматика.
Я скоро буду использовать это (для Oracle, а не для MySQL), поэтому, пожалуйста, сообщите сообществу, как работает это решение!
UPDATE:
Я только что вернулся к этой теме и прочитал комментарии... после дальнейшего размышления я бы действительно рекомендовал ANTLR, поскольку он поддерживает несколько грамматик. Повторюсь, я не использовал его, поэтому будет хорошо услышать, как он работает, а решать вам.
https://stackoverflow.com/questions/76083/parsing-sql-in-net/76151