根据值之间的任何值提取字段
Extract field based on any value in between values
我有一个名为 pagename 的字段,它采用以下形式:
tools|tools|tool|envestnet|results
tools|tools|tool|envestnet|inputs
tools|tools|tool|nikko|inputs
tools|tools|tool|nikko|results
tools|tools|tool name|ubs|results
tools|tools|tool name|ubs|inputs
tools|tools|tool name|iretire decum|results
tools|tools|tool name|iretire decum|inputs
等等..
我需要运行某个查询,基于以下子句:
case when pagename like 'tools|tools|tool name%' then 'Tool Name'
when pagename like 'tools|tools|tool|%' then 'Tool'
else '' end page_name
然而,这对我不起作用,因为它会在记录中创建重复,因为工具的 |输入和 |结果通常具有相同的值。
如何根据以下条件做案例陈述:
case when pagename like 'tools|tools|tool name|*|inputs' then 'Tool Name Inputs'
when pagename like 'tools|tools|tool|*|inputs' then 'Tool Inputs'
when pagename like 'tools|tools|tool name|*|results' then 'Tool Name Results'
when pagename like 'tools|tools|tool|*|results' then 'Tool Results'
else '' end page_name
哪里*可以是任何东西?
提前谢谢你。这是一个 Hive 问题,但我相信 SQL 解决方案也适用于此。
使用正则表达式 rlike
而不是 like
。 |
应该用 \\ 屏蔽,因为它在正则表达式中有特殊含义。 ^
- 表示字符串的开头,$
- 字符串的结尾。 .*?
是任何东西:
case when pagename rlike '^tools\|tools\|tool name\|.*?\|inputs$' then 'Tool Name Inputs'
when pagename rlike '^tools\|tools\|tool\|.*?\|inputs$' then 'Tool Inputs'
when pagename rlike '^tools\|tools\|tool name\|.*?\|results$' then 'Tool Name Results'
when pagename rlike '^tools\|tools\|tool\|.*?\|results$' then 'Tool Results'
else '' end page_name
我有一个名为 pagename 的字段,它采用以下形式:
tools|tools|tool|envestnet|results
tools|tools|tool|envestnet|inputs
tools|tools|tool|nikko|inputs
tools|tools|tool|nikko|results
tools|tools|tool name|ubs|results
tools|tools|tool name|ubs|inputs
tools|tools|tool name|iretire decum|results
tools|tools|tool name|iretire decum|inputs
等等..
我需要运行某个查询,基于以下子句:
case when pagename like 'tools|tools|tool name%' then 'Tool Name'
when pagename like 'tools|tools|tool|%' then 'Tool'
else '' end page_name
然而,这对我不起作用,因为它会在记录中创建重复,因为工具的 |输入和 |结果通常具有相同的值。
如何根据以下条件做案例陈述:
case when pagename like 'tools|tools|tool name|*|inputs' then 'Tool Name Inputs'
when pagename like 'tools|tools|tool|*|inputs' then 'Tool Inputs'
when pagename like 'tools|tools|tool name|*|results' then 'Tool Name Results'
when pagename like 'tools|tools|tool|*|results' then 'Tool Results'
else '' end page_name
哪里*可以是任何东西?
提前谢谢你。这是一个 Hive 问题,但我相信 SQL 解决方案也适用于此。
使用正则表达式 rlike
而不是 like
。 |
应该用 \\ 屏蔽,因为它在正则表达式中有特殊含义。 ^
- 表示字符串的开头,$
- 字符串的结尾。 .*?
是任何东西:
case when pagename rlike '^tools\|tools\|tool name\|.*?\|inputs$' then 'Tool Name Inputs'
when pagename rlike '^tools\|tools\|tool\|.*?\|inputs$' then 'Tool Inputs'
when pagename rlike '^tools\|tools\|tool name\|.*?\|results$' then 'Tool Name Results'
when pagename rlike '^tools\|tools\|tool\|.*?\|results$' then 'Tool Results'
else '' end page_name