【发布时间】:2014-04-27 05:44:45
【问题描述】:
我需要解析 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;
我可以轻松地隔离列定义,但我想拆分定义。逗号分隔是不可能的,因为它们可以在嵌套的括号中。
我可以遍历字符串以计算开始和结束字符串分隔符(引号等),计算开始和结束括号,因此我可以检测“第一级”逗号并对其进行拆分。
但我想知道是否没有更有效的方法,例如使用正则表达式,但我不擅长确定某些正则表达式是否可以匹配如此复杂的语法......
【问题讨论】: