例如,IP地址 117.136.2.165
想要截取前三组的地址,得到网络地址 117.136.2
在oracle,可以使用如下语句:
select substr('117.136.2.165',1,instr('117.136.2.165','.',1,3)-1)
from dual
;
但是,在hive sql里,instr只有前两个参数,即只能实现
instr('117.136.2.165','.')
这种情况下,可以用正则函数实现目的,代码如下:
select regexp_extract('117.136.2.165','(.*?\\..*?\\..*?)\\..*', 1)
from table_name
或
select regexp_extract('117.136.2.165','(.*?\\..*?\\..*?)\\..*')
from table_name