我需要解析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;
我可以轻松地隔离列定义,但后来我想拆分定义。不可能在逗号上拆分,因为这些可以在嵌套括号中。
我可以迭代字符串来计算开始和结束字符串分隔符(引号等),计算开始和结束括号,这样我就可以检测到“第一级”逗号并将它们分开。
但是我想知道是否有更有效的方法,例如使用正则表达式,但我不能很好地确定一些正则表达式是否可以匹配这种复杂的语法......