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:提取最后一个单词的主要内容,如果未能解决你的问题,请参考以下文章

提取句子/字符串中的最后一个单词?

在 bash/sed/awk 中提取文件的最后一个单词

java 一组扫描单词串并提取第一个或最后一个单词的方法。

在某个单词 Presto SQL 之后提取一个字符串

必须通过剥离符号 ^ 字符的最后一次出现以通过正则表达式提取结束来提取单词的开头

从 excel/openoffice 单元格中动态提取第一个、最后一个单词(然后是一些!)