Вот способ сделать это, используя коммерческую утилиту (sqlparser.com $ 149, бесплатная пробная версия)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using gudusoft.gsqlparser;
namespace GeneralSqlParserTest
{
class Program
{
static void Main(string[] args)
{
TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql);
sqlparser.SqlText.Text = "SELECT * FROM Customers c, Addresses a WHERE c.CustomerName='foo'";
sqlparser.OnTableToken += new TOnTableTokenEvent(OnTableToken);
int result = sqlparser.Parse();
Console.ReadLine();
}
static void OnTableToken(object o, gudusoft.gsqlparser.TSourceToken st, gudusoft.gsqlparser.TCustomSqlStatement stmt)
{
Console.WriteLine("Table: {0}", st.AsText);
}
}
}
Обратите внимание, что он считает 'c' и 'a' как таблицы, но этодовольно просто отфильтровать имена отдельных символов из ваших результатов
Я не использую и не владею этим инструментом, просто кое-что, что я нашел после некоторого поиска ...