如何使用impalasql将子字符串提取为新列

qlvxas9a  于 2021-06-26  发布在  Impala
关注(0)|答案(0)|浏览(170)

我想从一个表中的两列中提取名称,并将其与另一个表连接起来。如果“name”列中的名称是“not found”,我想从“description”列中提取它。
“描述”列将遵循3种模式:
找不到名称。名称:ab33c和客户
所以在这种情况下,我想提取出ab33c。
名称j2fc\u不是found:j2fc_being_decom_2017
我想把j2fc提取出来。
w3fkk不是found:summary:
我想把w3fkk提取出来。
下面是我写的代码:

SELECT inc.name, inc.Description, inc.new_name, srv.dv_category, srv.virtual,
FROM ( 
SELECT inc.name, inc.Description, 
CASE 
  WHEN inc.name NOT LIKE 'NOT FOUND%' THEN inc.name
  WHEN inc.Description LIKE '%Name :%' THEN REGEXP_REPLACE(inc.Description, '.*Name :(.+)(\s).*','\1')
  WHEN inc.Description LIKE 'Name%being%' THEN REGEXP_REPLACE(inc.Description, '.*(\s)(.+)_.+','\1') 
  WHEN inc.Description LIKE 'Name%was%' THEN REGEXP_REPLACE(inc.Description, '.*(\s)(.+)(\s).+','\1') 
  ELSE inc.name
  END as new_name
FROM incident inc
) inc
LEFT JOIN server srv 
ON inc.new_name = srv.dv_name

上下文将是impala sql。我能得到一些关于如何提取的帮助吗?非常感谢你。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题