SQL:提取最后一个单词

Posted

技术标签:

【中文标题】SQL:提取最后一个单词【英文标题】:SQL: extract the last word 【发布时间】:2021-12-14 17:36:35 【问题描述】:

我有一个如下所示的表格:

id | cars
1  | John's Honda
2  | Andrew's red lexus
3  | James has a bmw

我只需要获取显示实际“汽车”名称的“汽车”列的最后一个单词 我尝试了以下方法,但没有得到所需的输出

select substr(cars, -1)
from t

上面的代码只显示了该列的最后一个字符。后来,我尝试了以下方法:

select split(cars, ' ')[offset(1)] 
from t

但是,我收到“数组索引 1 超出范围(溢出)”错误。谁能帮助如何使用 bigquery 实现这一点?

【问题讨论】:

【参考方案1】:

考虑下面的简单方法

select *, 
  array_reverse(split(cars, ' '))[offset(0)] as brand
from your_table        

如果应用于您问题中的样本数据 - 输出是

注意:确实有很多方法可以完成您的案例 - 所以另一种方法是 regexp_extract(cars, r'\b(\w+)$') as brand

【讨论】:

谢谢!成功了!

以上是关于SQL:提取最后一个单词的主要内容,如果未能解决你的问题,请参考以下文章