如何使用bigquery选择列拆分的最后一个索引

tktrz96b  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(443)

关于拆分bigquery、mysql列有很多问题,但我找不到一个适合我的情况。
我正在处理一个大数据集(第三方),其中包括一个自由形式的位置字段,以规范化我的android应用程序。当我运行一个 select 我想用逗号分割列数据,只取最后一段并删去空白。
到目前为止,我通过搜索文档得出以下结论:

SELECT RTRIM(LOWER(SPLIT(location, ',')[OFFSET(-1)])) FROM `users` WHERE location <> ''

但是 -1 在最后一个元素拆分的技巧不起作用(使用偏移量或序数)。我不能用 ARRAY_LENGTH 使用相同的内联数组,我不确定如何构造嵌套查询并知道行的最后一列索引。
我可能是从错误的Angular 来看待这个问题,我现在使用android和nosql,所以我很久没有使用mysql了
如何正确构造此查询?

xqk2d5yq

xqk2d5yq1#

我想用逗号分割列数据,只取最后一段。。。
您可以使用以下方法(bigquery标准sql)

SELECT ARRAY_REVERSE(SPLIT(location))[SAFE_OFFSET(0)]

下面是一个示例:


# standardSQL

WITH `project.dataset.table` AS (
  SELECT '1,2,3,4,5' location UNION ALL
  SELECT '6,7,8'
)
SELECT location, ARRAY_REVERSE(SPLIT(location))[SAFE_OFFSET(0)] last_segment
FROM `project.dataset.table`

有结果的

Row location    last_segment     
1   1,2,3,4,5   5    
2   6,7,8       8

对于修剪-可以使用ltrim(rtrim())-如中所示

SELECT LTRIM(RTRIM(ARRAY_REVERSE(SPLIT(location))[SAFE_OFFSET(0)]))

相关问题