【正則】構造複雜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正則分析過程
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正則分析過程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.