在查詢中查找所有表名的正則表達式
我對正則表達式並不那麼熱情,它讓我的小腦袋融化了一些東西。
我正在嘗試在查詢中查找所有表名。所以說我有查詢:
SELECT one, two, three FROM table1, table2 WHERE X=Y我想拉出“table1,table2”或“table1”和“table2”
但是如果沒有 where 語句怎麼辦。它可能是文件的結尾,或者可能有 group by 或 order by 等。我知道“大多數”時間這不是問題,但我不喜歡為“大多數”編碼的想法情況並知道我留下了一個可能導致以後出現問題的漏洞。
這是一個可行的正則表達式嗎?我是正則表達式的普通人嗎?
(PS 這將在 C# 中完成,但假設這並不重要)。
我發現這個網站有一個很棒的解析器!
很值得。工作一種享受。
一種解決方法是對錶和視圖實施命名約定。然後可以對命名前綴解析 SQL 語句。
例如:
SELECT tbltable1.one, tbltable1.two, tbltable2.three FROM tbltable1 INNER JOIN tbltable2 ON tbltable1.one = tbltable2.three將空格拆分為數組:
("SELECT","tbltable1.one,","tbltable1.two,","tbltable2.three","FROM","tbltable1","INNER","JOIN","tbltable2","ON","tbltable1.one","=","tbltable2.three")將元素左側移到句點:
("SELECT","tbltable1","tbltable1","tbltable2","FROM","tbltable1","INNER","JOIN","tbltable2","ON","tbltable1","=","tbltable2")刪除帶有符號的元素:
("SELECT","tbltable1","tbltable1","tbltable2","FROM","tbltable1","INNER","JOIN","tbltable2","ON","tbltable1","tbltable2")簡化為唯一值:
("SELECT","tbltable1","tbltable2","FROM","INNER","JOIN","ON")過濾左 3 個字元 =
"tbl"
("tbltable1","tbltable2")