【正則】構造複雜SQL語句的正則表達式1

  以前做人口數據庫時經常寫些比較長的SQL語句,最長至上百行,看懂也得半天,恰巧在項目中遇見需要提取其中的條件子句,那時對正則也研究了一下,所以就順便用正則寫了個SQL語句分析、校驗工具。正則表達式一般用在驗證模式中,但個人認爲驗證只是正則的功能之一,在文本數據處理中才能發揮它的真正作用。利用正則表達式校驗分析SQL語句,對於日常開發中,可能有簡單問題複雜化之嫌,但這屬於一個學習SQL和正則的絕佳機會。 【問題】先提出一個很簡單的問題:如何提取Select語句中的使用的表和字段,以及過濾條件? selectcount(distinct pis_p_renk_1.sysid) asresult,
  pis_p_renk.juzhd as address,
  pis_p_guanlshx.guanlshx as guanlshx,
  pis_p_renk.hukxzh as hukxzh
  from pis_p_renk,
  pis_p_guanlshx,
  pis_p_zhuxyy,
  pis_p_zinshx,
  pis_p_guanx,
  pis_p_renk as pis_p_renk_1
  where pis_p_renk.sysid = pis_p_guanlshx.renkid
  and pis_p_renk.sysid = pis_p_zhuxyy.renkid
  and pis_p_renk_1.sysid = pis_p_guanx.renkid
  and pis_p_renk.sysid = pis_p_guanx.guanxrid
  and pis_p_guanx.sysid = pis_p_zinshx.guanxid
  and pis_p_guanx.guanxlx = '2'
  and pis_p_renk_1.xingb = '2'
  and substr(pis_p_renk.chushrq, 1, 6) between substr('@StartTime', 1, 6) and
  substr('@EndTime', 1, 6)
  and pis_p_guanlshx.dangq = '1'
  and (pis_p_guanlshx.guanlshxbdshj = ''or
  pis_p_guanlshx.guanlshxbdshj isnullor
  pis_p_guanlshx.guanlshxbdshj isnullor
  substr(pis_p_guanlshx.guanlshxbdshj, 1, 6) 正則表達式,再將細粒度合成粗粒度部分,最後組成完整正則表達式,可以校驗語句,在正則捕獲中可以獲取各組成部分。
  SQL正則構建工具:用於粗粒度、細粒度正則匹配。
  
  SQL語句分析工具:分析SQL語句各組成部分。
  
  (二)語句構造粗粒度分析(待續)
  (三)細粒度正則匹配
  (四)完整正則表達式搭建
  (五)SQL正則分析過程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章