我正在尝试从字符串中获取前两个单词
例如,从下面的这句话(字段 name ):
One Two Three Four Five
我只想得到“一二”
我已经尝试过下面的代码,但是只给了我一个单词。
SELECT SUBSTR(name, 1, STRPOS(name, ' '))
我有什么办法获得想要的结果?预先谢谢你
答案 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库提供了正则表达式支持;有关正则表达式语法,请参见该文档。