Tôi có một chuỗi đại diện cho truy vấn SQL và tôi cần trích xuất tên của các bảng từ chuỗi đó. Ví dụ:Cách phân tích cú pháp câu lệnh truy vấn SQL cho tên của các bảng
SELECT * FROM Customers
Sẽ trả lại "Khách hàng". Hoặc
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
Sẽ trả lại "Khách hàng, địa chỉ". Bắt tiên tiến hơn:
(SELECT B FROM (SELECT C FROM (SELECT Element AS C FROM MyTable)))
sẽ chỉ đơn giản là trở về "MyTable"
(Lưu ý, tôi có thể đã typo'd các truy vấn nhưng bạn sẽ có được ý tưởng).
Cách tốt nhất/chính xác nhất để hoàn thành điều này là gì?
Câu hỏi "Tại sao?" lò xo để ghi nhớ .... –
Bạn có đang nhắm mục tiêu đến bất kỳ RDBMS/Phương ngữ cụ thể nào không? Có một vài câu hỏi về SO về phân tích cú pháp SQL, ví dụ: http://stackoverflow.com/questions/589096/parsing-sql-code-in-c Không có gì đặc biệt kết luận mà tôi đã thấy mặc dù. –
Đối với 'lý do' là vì tôi đang phân tích cú pháp một truy vấn và hiển thị các bảng, hoạt động, vv .. không nhất thiết phải là vấn đề :) Đối với những gì tôi nhắm mục tiêu, đó là MS-SQL. – esac