【发布时间】: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
我有一个表格列,我需要从数据块中获取出现在字符 # 的第 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
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))
【讨论】:
您可以只拆分字符串并获取第 15 个元素,例如:
%sql
SELECT *,
regexp_extract( yourCol, '(?:[^#]*(#)){15}(.[^#]+)', 2 ) xregex,
split( yourCol, '#' )[15] AS xsplit
FROM tmp
我正在试验regex,这可能也适用于某些情况。我的结果:
【讨论】: