Google bigquery 提取BigQuery中字符串(UTC+;4:00),(UTC+;06:00)中C之前和之后的数字

Google bigquery 提取BigQuery中字符串(UTC+;4:00),(UTC+;06:00)中C之前和之后的数字,google-bigquery,Google Bigquery,我试图使用SUBSTR并获得像-+4、+06这样的值。从BigQuery中的(UTC+4:00)、(UTC+06:00)开始。但是,我没有看到FIND函数来知道的位置:和+的位置,因此我可以直接使用: SUBSTR(X,FIND(X,"+"),FIND(X,";")-1) 实现这一点的任何替代解决方案,或者我们是否需要使用REGEXP函数。您可以使用REGEXP\u EXTRACT(x,r'(\+.*)),如下例所示 #standardSQL WITH `project.dataset.tab

我试图使用
SUBSTR
并获得像-+4、+06这样的值。从BigQuery中的(UTC+4:00)、(UTC+06:00)开始。但是,我没有看到
FIND
函数来知道
的位置:
+
的位置,因此我可以直接使用:

SUBSTR(X,FIND(X,"+"),FIND(X,";")-1)

实现这一点的任何替代解决方案,或者我们是否需要使用
REGEXP
函数。

您可以使用
REGEXP\u EXTRACT(x,r'(\+.*))
,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'UTC+4:00' x UNION ALL
  SELECT 'UTC+06:00'
)
SELECT x, REGEXP_EXTRACT(x, r'(\+.*):') 
FROM `project.dataset.table`  
结果

Row x           f0_  
1   UTC+4:00    +4   
2   UTC+06:00   +06    
Row x           f0_  
1   UTC+4:00    +4   
2   UTC+06:00   +06  
3   UTC         0    
4   UTC-03:00   -03  
更新更多案例:

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'UTC+4:00' x UNION ALL
  SELECT 'UTC+06:00' UNION ALL
  SELECT 'UTC' UNION ALL
  SELECT 'UTC-03:00'
)
SELECT x, IFNULL(REGEXP_EXTRACT(x, r'UTC(.*):'), '0') 
FROM `project.dataset.table`
结果

Row x           f0_  
1   UTC+4:00    +4   
2   UTC+06:00   +06    
Row x           f0_  
1   UTC+4:00    +4   
2   UTC+06:00   +06  
3   UTC         0    
4   UTC-03:00   -03  

感谢您的快速响应…我还有两个场景,(UTC)和(UTC-04:00)…在第一个场景中,我应该得到0,在第二个场景中,我应该得到-4..我正在玩REGEXP,但我认为我在这里遗漏了一些东西..再次非常感谢