我想从一个表中的两列中提取名称,并将其与另一个表连接起来。如果“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。我能得到一些关于如何提取的帮助吗?非常感谢你。
暂无答案!
目前还没有任何答案,快来回答吧!