Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在配置单元中提取字符串的一部分?_String_Hive_Hiveql - Fatal编程技术网

String 如何在配置单元中提取字符串的一部分?

String 如何在配置单元中提取字符串的一部分?,string,hive,hiveql,String,Hive,Hiveql,我想在蜂箱里做这个。以下是在sql server中工作的查询 select LEFT('ENTERPRISE > DEMO', CHARINDEX('>', 'ENTERPRISE > DEMO') - 2) 基本上,我想提取左侧字符串中的所有字符。此外,此符号前面可以出现的字符数是可变的。 蜂巢中没有LEFT功能。如何使用substr或regexp\u extract实现此目的?HIVE支持INSTR,它返回的函数与CHARINDEX基本相同,但输入字段和测试值在函数中的顺

我想在蜂箱里做这个。以下是在sql server中工作的查询

select LEFT('ENTERPRISE > DEMO', CHARINDEX('>', 'ENTERPRISE > DEMO') - 2)
基本上,我想提取
左侧字符串中的所有字符。此外,此符号前面可以出现的字符数是可变的。
蜂巢中没有
LEFT
功能。如何使用
substr
regexp\u extract
实现此目的?

HIVE支持INSTR,它返回的函数与CHARINDEX基本相同,但输入字段和测试值在函数中的顺序相反,所以我会尝试

SELECT SUBSTR('ENTERPRISE > DEMO',1,INSTR('ENTERPRISE > DEMO','>') -2)
你可以用

1)
substring
instr

trim(substring(val,1,instr(val,'>')-1))
2)
regexp\u extract

trim(regexp_extract(val,'(^.*)>',1))

除了已经提供的
regexp\u extract
substr()
+
instr()
解决方案外,您还可以使用
split()

如果要删除空格,请应用trim():

hive> select trim(split('ENTERPRISE > DEMO','>')[0]);
OK
ENTERPRISE
或者可以按任意数量的空格+'>'+任意数量的空格进行拆分。split()使用regexp,无需使用trim():


谢谢你!!!修剪/分割效果更好,有助于消除我在空格方面遇到的一些问题。@buddykumar如果您对我的答案感到满意,请接受答案
hive> select trim(split('ENTERPRISE > DEMO','>')[0]);
OK
ENTERPRISE
hive> select trim(split('ENTERPRISE >DEMO',' *?> *?')[0]);
OK
ENTERPRISE
Time taken: 0.075 seconds, Fetched: 1 row(s)