2014-01-09 57 views
1

說,我有很長的URLGreenPlum公司子串 - 長文本的獲取部分

xyz = 'www.google.com/xyz?para1=value1&para2=value2&para3=value3....' 

我試圖讓「PARA1」出這個長的URL的

所以,我有

select TRIM(Leading '?' from Substring(xyz from '%#"?%=#"%' for '#')) 

我得到這個特定的語句回答是

para1=value1&para2=value2&para3= 

我怎樣才能得到公正「PARA1」使用上面的SELECT語句(或其他類似方法?)

我使用Greenplum的(如在主題標題中提到的)

+0

模式表達式在Pg 9.3上失敗了,所以我很難測試它。一般來說,我想說你想嵌套兩個'substring'表達式,一個切斷前端,另一個在第一個'='之後切入。 –

+0

你好,謝謝:) 我最終做了兩步,一旦我得到'?'後的所有東西,我用'Regexp_string_to_table(value&),然後regexp_string_to_table(value =)。通過這種方式,我將所有參數名稱(para1,para2 ...)放在一列中,並將值放在第二列中。 我試了兩個子字符串,但由於某種原因,我無法成功獲取我想要的數據。 – user3075951

回答

2

既然你顯然有regexp_功能(我不認爲Greenplum支持它們)使用:

select (regexp_matches(
    'www.google.com/xyz?para1=value1&para2=value2&para3=value3....', 
    '\?([^&]+)=' 
    ))[1];