代码之家  ›  专栏  ›  技术社区  ›  Nick Cardoso

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

  •  0
  • Nick Cardoso  · 技术社区  · 6 年前

    关于拆分BigQuery、MySQL列有很多问题,但我找不到一个适合我的情况。

    select

    到目前为止,我通过搜索文档得出以下结论:

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

    -1 在最后一个元素拆分的技巧不起作用(使用偏移量或序数)。我不能用 ARRAY_LENGTH

    我可能是从错误的角度来看待这个问题,我现在使用Android和NoSQL,所以我很久没有使用MySQL了

    如何正确构造此查询?

    1 回复  |  直到 6 年前
        1
  •  14
  •   Mikhail Berlyant    6 年前

    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)])) 
    
        2
  •  0
  •   Avi-IHM    3 年前

    为了得到分割字符串的最后一部分,我使用 计算分隔符数的技巧:

    split(<string>,'-')[OFFSET(length(<string>)-length(replace(<string>,'-',''))]