c# - 如何正确解析 SQL CREATE TABLE 语句

标签 c# sql regex parsing

我需要解析 SQL“CREATE TABLE”语句,以获取字段列表及其属性。

它主要是 MySQL 语法,应该是(像这个例子一样带有无法控制的嵌套括号:

CREATE TABLE 'tablename' (
field1 INT,
field2 VARCHAR(10),
field3 FLOAT NOT NULL DEFAULT 0,
PRIMARY KEY (field1, field2),
(CONSTRAINT fk FOREIGN KEY whatever)
) options;

我可以很容易地隔离列定义,但我想拆分定义。不能用逗号拆分,因为它们可以在嵌套的括号中。

我可以遍历字符串以计算开始和结束字符串定界符(引号等),计算开始和结束括号,这样我就可以检测到“第一级”逗号并对其进行拆分。

但我想知道是否有更有效的方法,例如使用正则表达式,但我还不够擅长确定某些正则表达式是否可以匹配如此复杂的语法......

最佳答案

也许 its 会有用。您将像使用 sql 解析器一样使用它。和 this 用于正则表达式

关于c# - 如何正确解析 SQL CREATE TABLE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531976/

相关文章:

C# WPF 分辨率独立性?

mysql - 数据库中的字符集和排序规则

带有外键的 PHP MySQL 查询搜索

java - 如何使用 Java 正则表达式将带有撇号的单词算作两个单独的单词

python - 正则表达式搜索返回结果或为空

c# - 每行带有按钮的 WPF ListView

c# - Windows Mobile : how do I know if I have a GPS installed?

sql - 每个月的 CHAR/VARCHAR2 数据类型的范围分区

c# - 如何从 C# 中的文本中提取连续的电子邮件地址

c# - MailMessage c# - 如何使其成为 HTML 并添加图像等?