Regular expression to find all table names in a query

前端 未结 12 951
一个人的身影
一个人的身影 2020-12-03 18:09

I am not that hot at regular expressions and it has made my little mind melt some what.

I am trying to find all the tables names in a query. So say I have the query

12条回答
  •  自闭症患者
    2020-12-03 18:44

    One workaround is to implement a naming convention on tables and views. Then the SQL statement can be parsed on the naming prefix.

    For example:

    SELECT tbltable1.one, tbltable1.two, tbltable2.three
    FROM tbltable1
        INNER JOIN  tbltable2
            ON tbltable1.one = tbltable2.three
    

    Split whitespace to array:

    ("SELECT","tbltable1.one,","tbltable1.two,","tbltable2.three","FROM","tbltable1","INNER","JOIN","tbltable2","ON","tbltable1.one","=","tbltable2.three")

    Get left of elements to period:

    ("SELECT","tbltable1","tbltable1","tbltable2","FROM","tbltable1","INNER","JOIN","tbltable2","ON","tbltable1","=","tbltable2")

    Remove elements with symbols:

    ("SELECT","tbltable1","tbltable1","tbltable2","FROM","tbltable1","INNER","JOIN","tbltable2","ON","tbltable1","tbltable2")

    Reduce to unique values:

    ("SELECT","tbltable1","tbltable2","FROM","INNER","JOIN","ON")

    Filter on Left 3 characters = "tbl"

    ("tbltable1","tbltable2")

提交回复
热议问题