是否可以通过使用 Hive Script SQL 中的分隔符来提取字符串的一部分?

Posted

技术标签:

【中文标题】是否可以通过使用 Hive Script SQL 中的分隔符来提取字符串的一部分?【英文标题】:Is it possible to extract a part of the string by using the delimiter in Hive Script SQL? 【发布时间】:2021-09-04 06:05:36 【问题描述】:

我已经分配了一个问题来按类别对每个 id 用户发生的问题进行分组。类别栏以“MainProblem@Detail1@Detail2”的形式记录。我想知道我是否可以使用hive脚本sql中的函数substring_index()通过以下代码提取主要问题和最后的detail2:

select 
substring_index(category_out_line, "@",1) as MainProblem,
substring_index(category_out_line, "@",-1) as Detail2 `
from TableA;

【问题讨论】:

你真的试过你的代码吗? 我投票关闭一个不可重现的,因为你有一个关于有效 SQL 代码的问题,你只是问它是否有效。 【参考方案1】:

您可以像在您的问题中那样使用 substring_index 来提取第一个和最后一个元素,但如果您需要提取所有元素,或者第二个、第三个等,拆分会更好:

split("MainProblem@Detail1@Detail2",'@')[0] --returns MainProblem
split("MainProblem@Detail1@Detail2",'@')[1] --returns Detail1
split("MainProblem@Detail1@Detail2",'@')[2] --returns Detail2

【讨论】:

以上是关于是否可以通过使用 Hive Script SQL 中的分隔符来提取字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章