REGEXP bigquery

时间:2018-02-13 14:48:32

标签: sql google-bigquery

我想删除' OLD_DATA'列中的前四个字母包含以下数据 - (删除":"前面的所有数据)并保留剩余数据。

-----------------------                 ----------------------- 
     OLD_DATA (before)                        NEW_DATA(after)
----------------------                  ----------------------
abc:cdef-12E456-AB                          cdef-12E456-AB
cdef-12E456-AB-12E456-AB                    cdef-12E456-AB
bcd:ghij-12E456-BS                          ghij-12E456-BS
abc:cdef-12E456-AB                          cdef-12E456-AB
cdef-12E456-AB                              cdef-12E456-AB
ghij-12E456-BS                              ghij-12E456-BS
bcd:ghij-12E456-BS                          ghij-12E456-BS
cdef-12E456-AB                              cdef-12E456-AB
abc:cdef-12E456-AB                          cdef-12E456-AB
abc:cdef-12E456-AB                          cdef-12E456-AB
-------------------------               ------------------------- 

我写了以下代码:REGEXP_EXTRACT(TABLE。OLD_DATA,r'(\ w *):')作为NEW_DATA:正如预期的那样将前三个字母分隔成单独的列但不删除实际数据。

此代码:REGEXP_EXTRACT(TABLE。OLD_DATA,r':(\ w *)')为NEW_DATA 在":"之间分隔值首先" - " ....这是5到10个字母。

任何建议......

2 个答案:

答案 0 :(得分:2)

#standardSQL
SELECT REGEXP_REPLACE(old_data, r'^\w*:', '') as new_data
FROM table

答案 1 :(得分:1)

嗯。想到这一点:

select regexp_replace(data, '^...:', '')

请注意,这会回答您的问题,但它不会产生所需的输出,因为两者不同步。