2015-07-10 113 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