hive查询语言rlike query

blpfk2vs  于 2021-06-28  发布在  Hive
关注(0)|答案(3)|浏览(447)

我正在尝试使用以下查询进行查询

select * from mytable where mycolumn rlike '\d~[\d\.]+~\d~[\d\.]+~\d~2~(33|44)`

下面是mytable中的一些示例数据

id | mycolumn
---|--------------------------------
1  | 1~2.3.1~9~333.2~3~2~33
2  | 1~1.4.3~4~233.2~4~2~44
3  | 1~53.0.2785.124~4~6.0.1~5~2~33
4  | 1~3~3~3~3~6~3

但是,结果总是空的。
如hive查询语言手册所述,
如果a或b为null,则为null;如果a的任何子字符串(可能为空)与java正则表达式b匹配,则为true;否则为false。例如,“foobar”rlike“foo”的计算结果为true,“foobar”rlike“^f.*r$”的计算结果也是true。
我用java测试了regexp,效果很好。也试图取代 \\\ ,并试图替换 ~\~ ,但没有运气。
我用来测试的java代码如下

Pattern p = Pattern.compile("\\d~[\\d\\.]+~\\d~[\\d\\.]+~\\d~2~(33|44)");

谁能告诉我这个问题出了什么问题吗?谢谢!

khbbv19g

khbbv19g1#

尝试一些更简单的方法,看看是否有效:

\d[\S]*(33|44)

演示:https://regex101.com/r/3tqxv6/1

mrphzbgm

mrphzbgm2#

我想你可以这样做

where mycolumn rlike '.*~[0-9].[0-9].[0-9]~[0-9]~[0-9][0-9][0-9].[0-9]~[0-9]~      [0-9]~(33|44)';
or mycolumn rlike '.*(33|44)';
it won't work as java with  '\\d~...' or '\d~'
eiee3dmh

eiee3dmh3#

你的开始和结束记号不匹配。你有一个背勾和一个单引号( `'`` )

相关问题