Как получить первые два слова из строки? - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь получить первые два слова из строки

Например, из этого предложения ниже (поле имя ):

One Two Three Four Five

Я только хочу получить 'One Two'

Я попробовал код ниже, но он дал мне только первое слово.

SELECT SUBSTR(name, 1, STRPOS(name, ' '))

Есть ли способ для меня получить результат, который я хочу?Заранее спасибо

1 Ответ

1 голос
/ 25 сентября 2019

Вы можете использовать REGEXP_EXTRACT(sentence, r'\w+\s+\w+')

, например,

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'One Two Three Four Five' sentence
)
SELECT sentence, REGEXP_EXTRACT(sentence, r'\w+\s+\w+') AS first_two_words
FROM `project.dataset.table`   

выходы

Row sentence                    first_two_words  
1   One Two Three Four Five     One Two  

Также рассмотрите скорректированную версию, как показано ниже, если вам нужно обрабатывать край, когдав предложении есть только одно слово

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'One Two Three Four Five' sentence UNION ALL
  SELECT 'One'
)
SELECT sentence, REGEXP_EXTRACT(sentence, r'\w+(?:\s+\w+)?') AS first_two_words  
FROM `project.dataset.table`   

с результатом

Row sentence                    first_two_words  
1   One Two Three Four Five     One Two  
2   One                         One     

Подробнее о REGEXP_EXTRACT можно прочитать здесь

Также обратите внимание: BigQuery обеспечивает поддержку регулярных выражений с использованием библиотеки re2 ;см. эту документацию для ее синтаксиса регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...