2010-08-23 118 views
0

我有ORDER BY語句的一部分裏面,我必須把它在邏輯部分分裂:正則表達式忽略分隔符平衡括號

my $sql_part = <<EOH 
    IF(some_table.some_field <> 3, 1, 0), 
    some_table.other_field, 
    CASE other_table.third_field WHEN IS NULL THEN 2 ELSE 1 END, 
    other_table.third_field 
EOH 

,你知道拆分,原字符串不包含換行符和IF可以嵌套。

問題是我不想分裂嵌套的IF,函數調用內的東西。

那麼簡單split /\s*,\s*/, $sql_part將無法​​正常工作。

是否有一個正則表達式可以做到這一點,或者我應該做的不同?

回答

3

有一個正則表達式,但你可能想只使用一個SQL語法分析程序:SQL::Statement

+0

對於搜索引擎的好處:當一個專門的解析器在給定的答案是沒有用的,['數據:: Record'](http://p3rl.org/Data::Record)將完成這項工作。 – daxim 2010-08-23 21:19:42

相關問題