如何从字符串中获取前两个单词?

时间:2019-09-25 02:38:35

标签: google-bigquery

我正在尝试从字符串中获取前两个单词

例如,从下面的这句话(字段 name ):

One Two Three Four Five

我只想得到“一二”

我已经尝试过下面的代码,但是只给了我一个单词。

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

我有什么办法获得想要的结果?预先谢谢你

1 个答案:

答案 0 :(得分:1)

您可以使用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 here的更多信息

另外,请注意:BigQuery使用re2库提供了正则表达式支持;有关正则表达式语法,请参见该文档。