当前位置: 首页 > article >正文

在 hiveSQL 中判断一个字段是否包含某个值

在 hiveSQL 中判断一个字段是否包含某个值是在写sql时经常遇到的问题,本文将通过下述案例用五种方法进行解决

数据准备:

题目:查找姓名中含有”i“的员工信息

CREATE TABLE employee (
    name STRING,
    age INT
);

INSERT INTO employee VALUES
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 35),
    ('David', 40);

方案一:like

select * from employee where name like "%i%";

方案二:rlike 

如果需要使用正则表达式来匹配复杂的模式,可以使用rlike

select * from employee where name rlike ".*i.*";

 

方案三:locate(字符串,字段名)

  • locate返回某个字符串在某个字段中第一次出现的位置,如果要是没有找到,返回0
  • 可以用返回值是否为0来判断一个字段是否包含某个值
select locate('i',name) from employee;
select * from employee where locate('i',name) != 0;

 

方案四:instr(字段名,字符串) 

  • 返回某个字符串在某个字段中第一次出现的位置,如果要是没有找到,返回0
  • 和 locate的区别是先写列名再写要查找的字符串
select instr(name,'i') from employee;
select * from employee where instr(name,'i') != 0;

 

 方案五:regexp_extract

可以使用regexp_extract(subject, pattern, index)函数来提取字符串中匹配指定正则表达式的字串。要判断一个字符串中是否包含字串"ABCD",可以使用如下代码

subject是要判断的字符串,pattern;是要匹配的字串,index表示从整个匹配结果中获取整个字串。如果返回的字串不为空,则说明匹配到了,即包含字串'pattern’,否则不包含。你需要将your_table替换为你实际使用的表名或子查询

select *,regexp_extract(name,'i',0) from employee where regexp_extract(name,'i',0) = 'i';


http://www.kler.cn/a/382256.html

相关文章:

  • GM_T 0039《密码模块安全检测要求》题目
  • 电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?
  • Python读取Excel批量写入到PPT生成词卡
  • 解锁移动设备管理新技能-RayLink远程控制手机
  • Oracle 数据库函数的用法(一)
  • 了解RPC
  • 基于STM32的智能水族箱控制系统设计
  • 机器学习—更复杂的神经网络
  • mysql数据库(二)存储引擎、表操作、数据类型
  • MySQL数据库理论与知识剖析
  • 【华硕天选5开机黑屏只有鼠标,调用资源管理器也无法黑屏状态的一种解决方式】
  • Ubuntu下载ISO镜像的方法
  • 高频电子线路---鉴频
  • nginx配置代理地址
  • docker+nacos
  • 【C++刷题注意事项】bfs?单源bfs?多源bfs?bfs解决拓扑排序?
  • PH热榜 | 2024-11-06
  • 写歌词的技巧和方法:精准用词,让歌词熠熠生辉,妙笔生词AI智能写歌词软件
  • 真·香!深度体验 zCloud 数据库云管平台 -- DBA日常管理篇
  • 【C++】手动实现C++ vector容器:深入理解动态数组的工作原理
  • 多线程案例---单例模式
  • Jmeter命令监控CPU等指标
  • 【R语言】解决package ‘qvalue’ is not available (for R version 3.6.1)
  • 登录注册窗口(一)
  • 空元组同一空间,空列表不是同一空间print(a is b, c is d)
  • AWS云服务器选择哪个区域最好?