当前位置:   article > 正文

hive中判断一个字符串是否包含另一个子串的四种方法,sql中也可用_hive 判断字符串包含

hive 判断字符串包含

hive中判断一个字符串是否包含另一个子串的四种方法

如果你有一个数据需求,需要从一个字段中,判断是否有一个字符串,你该怎么做

一、方法1:like和rlike

最能想到的方法,用like或者rlike
在这里插入图片描述

select "i want to touch fish" like("%fish%");
  • 1

在这里插入图片描述

那么rlike和like有什么区别呢,

简而言之,rlike不用一些花里胡哨的,直接匹配就可以
在这里插入图片描述

select "i want to touch fish" rlike("%fish%");
  • 1

在这里插入图片描述

如果换成这样

select "i want to touch fish" rlike("fish");
  • 1

在这里插入图片描述

二、方法2:locate

先看一下这个方法hive给出的解释
在这里插入图片描述

返回第一次出现的位置索引

select locate("fish", "i want to touch fish");
  • 1

在这里插入图片描述

locate方法还有个强大的地方就是,可以给第三个参数,一个索引,那么在查找的时候就会从这个索引处开始查找

select locate("t", "i want to touch fish");
  • 1

就比如上面这个语句,如果未给出第三个参数,那么就是返回索引 6 的位置,如果第三个参数给出9,那么就会从索引9的位置开始

select locate("t", "i want to touch fish", 9);
  • 1

在这里插入图片描述

三、instr

看一下hive怎么给出的参考
在这里插入图片描述

这个就和locate相似了,但是没有locate强大,它可以给出第一次出现的位置索引

select instr('i want to touch fish', 'fish');
  • 1

在这里插入图片描述

instr()和locate()的区别在于,instr的字符串在前,子串在后;而locate的字符串在后,子串在前

四、regexp正则匹配

先看下hive是怎么给出的
在这里插入图片描述

其实这个用法和rlike的用法相似,直接匹配就行

select "i want to touch fish" regexp "fish";
  • 1

会返回boolean类型的结果
在这里插入图片描述

这个比rlike方便的地方就是,regexp可以带括号,也可以不带,而rlike就必须带了

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/605080
推荐阅读
相关标签
  

闽ICP备14008679号