Skip to content Skip to sidebar Skip to footer

How To Select Column Names And Tables Of An Sql Using Regex?

I have an SQL string that looks something like this: SELECT USER.'ID', USER.'NAME', USER.'BIRTH',USER.'GENDER', PACKAGE.'type' PACKAGE.'code' FROM 'DBNAME'.'USER' U

Solution 1:

Use this Regex will get the column and table name:

  (?is)SELECT(.*?)(?<!\w*")FROM(?!\w*?")(.*?)(?=WHERE|ORDER|$)
  • Group[1] : column
  • Group[2] : table name

Code Samples:

string sql=@"SELECT
    USER.""ID"", USER.""NAME"", USER.""BIRTH"",USER.""GENDER"",
    PACKAGE.""type""
    PACKAGE.""code""
FROM
    ""DBNAME"".""USER"" USER,
    ""DBNAME2"".""PACKAGE"" PACKAGE
WHERE
    USER.""PACKAGE_ID"" = PACKAGE.""ID""
ORDER BY
    USER.""NAME"";";

    var reg=new Regex(@"(?is)SELECT(.*?)(?<!\w*"")FROM(?!\w*?"")(.*?)(?=WHERE|ORDER|$)");
    var colunms=reg.Match(sql).Groups[1].Value.Split(newchar[]{','},StringSplitOptions.RemoveEmptyEntries);
    var tables=reg.Match(sql).Groups[2].Value.Split(newchar[]{','},StringSplitOptions.RemoveEmptyEntries);

Post a Comment for "How To Select Column Names And Tables Of An Sql Using Regex?"