我正在尝试使用以下查询进行查询
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)");
谁能告诉我这个问题出了什么问题吗?谢谢!
3条答案
按热度按时间khbbv19g1#
尝试一些更简单的方法,看看是否有效:
演示:https://regex101.com/r/3tqxv6/1
mrphzbgm2#
我想你可以这样做
eiee3dmh3#
你的开始和结束记号不匹配。你有一个背勾和一个单引号( `'`` )