gpt4 book ai didi

c# - 如何解析表名的 SQL 查询语句

转载 作者:太空狗 更新时间:2023-10-29 23:19:01 29 4
gpt4 key购买 nike

我有一个表示 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”

(注意,我可能打错了查询,但你明白了)。

完成此任务的最佳/最准确方法是什么?

最佳答案

这是一种使用商业实用程序(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”计为表格,但从结果中过滤掉单个字符名称会非常简单

我没有使用或拥有这个工具,只是经过一番搜索后发现的东西......

关于c# - 如何解析表名的 SQL 查询语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122342/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com