Ответ 1
Кажется, там есть несколько хороших парсеров.
В этой статье SO есть образец с использованием MS Entity Framework:
Анализ кода SQL на С#
Кажется, кто-то другой свернул их и выставил на Code Project:
http://www.codeproject.com/KB/dotnet/SQL_parser.aspx
Лично я бы пошел с решением Entity Framework, так как он был создан и поддерживается MS, но также, вероятно, тесно связан с SQL Server. Поскольку вы смотрите на MySQL, вы можете захотеть пойти с настраиваемым решением в Code Project, так как я уверен, что вы можете запрограммировать больше пользовательских решений, как того требует грамматика.
Я буду использовать это в ближайшее время (для Oracle, а не для MySQL), поэтому, пожалуйста, сообщите сообществу, как это работает!
ОБНОВЛЕНИЕ:
Я только что вернулся к этому и прочитал комментарии... после дальнейшего размышления я бы рекомендовал ANTLR, поскольку он поддерживает несколько грамматик. Еще раз, я не использовал его, поэтому будет хорошо слышать, как он работает, и решать вам.
https://stackoverflow.com/questions/76083/parsing-sql-in-net/76151