【问题标题】:Databricks - String manipulation via sql commandDatabricks - 通过 sql 命令进行字符串操作
【发布时间】:2020-05-11 21:15:18
【问题描述】:

我有一个表格列,我需要从数据块中获取出现在字符 # 的第 15 次和第 16 次之间出现的任何内容,如下例所示:

列 1234##E#A#1234#01/01/4500#X#*ABCDE#7#1##N#N#N#0#Z.POIUS.LKJS_20200103#0#

结果 Z.POIUS.LKJS_20200103

我该怎么做?

【问题讨论】:

    标签: sql databricks azure-databricks


    【解决方案1】:

    select reverse(substring_index(reverse(substring_index('1234##E#A#1234#01/01/4500#X#*ABCDE#7#1##N#N#N#0#Z.POIUS.LKJS_20200103#0#', '#', 16)),'#', 1))

    【讨论】:

      【解决方案2】:

      您可以只拆分字符串并获取第 15 个元素,例如:

      %sql
      SELECT *, 
        regexp_extract( yourCol, '(?:[^#]*(#)){15}(.[^#]+)', 2 ) xregex,
        split( yourCol, '#' )[15] AS  xsplit    
      FROM tmp
      

      我正在试验regex,这可能也适用于某些情况。我的结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-10
        • 1970-01-01
        • 2021-02-20
        • 2016-12-02
        相关资源
        最近更新 更多