我有一个字符串表示一个SQL查询,我需要从该字符串中提取表的名称。例如:如何解析表的名称SQL查询语句
SELECT * FROM Customers
会返回“客户”。或
SELECT * FROM Customers c, Addresses a WHERE c.CustomerName='foo'
SELECT a.AddressZip FROM Customers c
INNER JOIN Addresses a ON c.AddressId=a.AddressId
会返回“客户,地址”。获取更先进:
(SELECT B FROM (SELECT C FROM (SELECT Element AS C FROM MyTable)))
仅返回 “MyTable的”
(注意,我可能已经typo'd的查询,但你的想法)。
完成此操作的最佳/最准确的方法是什么?
问题“为什么?”弹出想法.... – 2010-06-26 01:51:15
你是否针对任何特定的RDBMS /方言?有关于解析SQL的一些问题,例如http://stackoverflow.com/questions/589096/parsing-sql-code-in-c没有什么特别的结论,但我已经看到。 – 2010-06-26 02:08:20
至于'为什么'这是因为我解析查询的日志文件并显示访问最多的表,操作等。不是它应该重要:)至于我瞄准什么,它是MS-SQL。 – esac 2010-06-26 02:15:22