Sql REGEXP bigquery

Sql REGEXP bigquery,sql,google-bigquery,Sql,Google Bigquery,我想删除“OLD_DATA”列中包含以下数据的前四个字母—(删除前面的所有数据):)并保留其余数据 ----------------------- ----------------------- OLD_DATA (before) NEW_DATA(after) ---------------------- ---------------------- abc:cdef-1

我想删除“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*):')作为新的_数据:按预期将前三个字母分隔到单独的列中,但不从实际数据中删除

此代码:REGEXP_提取(
TABLE
.OLD_DATA,r':(\w*))作为新的_数据 分隔“:”和第一个“-”之间的值,它们是5到10个字母


任何建议…

嗯。我想到了:

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

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

是否可以去掉任何“空”、“空”、“0”和“1”此旧数据列中的值…?请给出一个示例实际旧数据表,其中没有数据、空或1或0数据。抱歉,当类型为注释时,格式似乎错误“HPLA-19C204-BB GX63-14C151-AC FW93-19C204-BG JPLA-19C204-BB HPLA-19C204-BA null 1 HPLA-19C204-BF 0 JX63-19C204-BB null GX63-19C204-BB HPLA-19C204-BE JPLA-19C204-BA”在REGEXP_包含的位置添加类似于
的内容(旧_数据,r'.*-.-.-.-.-.-.*-.*)
到querygreat的结尾。什么时候你会在SO上有足够的声誉-回来看看有什么进展:o)
#standardSQL
SELECT REGEXP_REPLACE(old_data, r'^\w*:', '') as new_data
FROM table