我想从一个表中的两列中提取名称,并将其与另一个表连接。如果名称在'名称'列是“未找到”,我想从“描述”中提取它。柱。
'说明'专栏将遵循3种模式:
找不到名字。名称:ab33c和客户端
所以在这种情况下我想提取ab33c。
找不到名称j2fc_being:j2fc_being_decom_2017
我想提取j2fc。
找不到名称w3fkk:摘要:
我想提取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。 我可以获得一些如何提取的帮助吗?非常感谢你。