我想删除' 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个字母。
任何建议......
答案 0 :(得分:2)
#standardSQL
SELECT REGEXP_REPLACE(old_data, r'^\w*:', '') as new_data
FROM table
答案 1 :(得分:1)
嗯。想到这一点:
select regexp_replace(data, '^...:', '')
请注意,这会回答您的问题,但它不会产生所需的输出,因为两者不同步。