hive中判断一个字符串是否包含另一个子串的四种方法,sql中也可用
2023-04-18 16:28:58 时间
hive中判断一个字符串是否包含另一个子串的四种方法
如果你有一个数据需求,需要从一个字段中,判断是否有一个字符串,你该怎么做
一、方法1:like和rlike
最能想到的方法,用like或者rlike
select "i want to touch fish" like("%fish%");
那么rlike和like有什么区别呢,
简而言之,rlike不用一些花里胡哨的,直接匹配就可以
select "i want to touch fish" rlike("%fish%");
如果换成这样
select "i want to touch fish" rlike("fish");
二、方法2:locate
先看一下这个方法hive给出的解释
返回第一次出现的位置索引
select locate("fish", "i want to touch fish");
locate方法还有个强大的地方就是,可以给第三个参数,一个索引,那么在查找的时候就会从这个索引处开始查找
select locate("t", "i want to touch fish");
就比如上面这个语句,如果未给出第三个参数,那么就是返回索引 6 的位置,如果第三个参数给出9,那么就会从索引9的位置开始
select locate("t", "i want to touch fish", 9);
三、instr
看一下hive怎么给出的参考
这个就和locate相似了,但是没有locate强大,它可以给出第一次出现的位置索引
select instr('i want to touch fish', 'fish');
instr()和locate()的区别在于,instr的字符串在前,子串在后;而locate的字符串在后,子串在前
四、regexp正则匹配
先看下hive是怎么给出的
其实这个用法和rlike的用法相似,直接匹配就行
select "i want to touch fish" regexp "fish";
会返回boolean类型的结果
这个比rlike方便的地方就是,regexp可以带括号,也可以不带,而rlike就必须带了
相关文章
- 写在Stack Overflow封禁ChatGPT之后,人工智能的危机时刻
- 对软件系统的一些理解
- 这种精度高,消耗资源少的大模型稀疏训练方法被找到了
- Linus Torvalds背后 :成功的五个残酷真相
- ChatGPT还在2G冲浪?新模型「youChat」:我已能够解说2022世界杯
- OpenAI CEO谈AI画图明星DALL·E 2:技术突破不多,地气接了不少
- ChatGPT怎么突然变得这么强?华人博士万字长文深度拆解GPT-3.5能力起源
- 大牛架构师珍藏的10条编程原则
- PS上的开源Stable Diffusion插件来了:一键AI脑补,即装即用
- 两年云原生落地实践在运维和开发侧踩过的六个坑
- UiPath业务自动化平台推出新功能以支持应用开发,扩展自动化用例
- 谷歌Recorder实现说话人自动标注,功能性与iOS语音备忘录再度拉大
- 受ChatGPT启发,10天完成能和数据聊天APP,回答问题不输本科生
- CARLA-GEAR: 为视觉模型对抗鲁棒性系统评估的数据生成器
- 真的这么丝滑吗?Hinton组提出基于大型全景掩码的实例分割框架,图像视频场景丝滑切换
- Gartner:到2023年全球低代码开发技术市场规模将增长20%
- 陶哲轩等人用编程方法,推翻了60年几何难题「周期性平铺猜想」
- 测量耐力也有算法了!仅需锻炼20分钟,就能知晓自己能跑多久
- 为什么开发人员离开谷歌
- 又一巨头宣布入局AIGC,一口气开源数个模型,还道出了它的变现之道