2015-07-10 111 views

回答

5
regexp_extract('2foa1fa::12hjk','^(\\w.*)\\:{2}(\\w.*)$',1) as word1 

OUTPUT:2foa1fa

regexp_extract('2foa1fa::12hjk','^(\\w.*)\\:{2}(\\w.*)$',2) as word2 

OUTPUT:12hjk

  • ^錨字符串
  • 的\\ W查找一個單詞字符和年初*手段任何次數
  • \\:{2}尋找兩個:i娜行(這是你::分隔符)
  • $錨定字符串到字符串
  • 指定在REGEXP_EXTRACT第三個參數提取索引(模式)結束

現在只是堅持你的列名在字符串文字的地方,你應該很好去。

您也可以使用分割函數來創建一個數組,然後再根據數組的位置進行查詢。這將是這個樣子:

select my_array[2] from 
    (select split('2foa1fa::12hjk','\\::') as my_array from my_table) b; 

OUTPUT:12hjk