извлечь число до: и после C в строке (UTC + 4: 00), (UTC + 06: 00) в BigQuery - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь использовать SUBSTR и получить такие значения, как - +4, +06. с (UTC + 4: 00), (UTC + 06: 00) в BigQuery. Тем не менее, я не вижу функции FIND, чтобы узнать положение : и положение +, чтобы я мог напрямую использовать:

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

Любые альтернативные решения для достижения этого или сделать нам нужно использовать REGEXP функций.

1 Ответ

1 голос
/ 07 февраля 2020

Вы можете использовать REGEXP_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    

Обновление для других случаев:

#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  
3   UTC         0    
4   UTC-03:00   -03  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...