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,但我认为我在这里遗漏了一些东西..再次非常感谢