sql中判断一个字段是否包含一个数据的方法有哪些?
目录
一、like模糊查询(like关键字)
二、locate(字符串,字段名)
三、 instr(字段名,字符串)
四、regexp_extract(subject, pattern, index)
以下是几种方法,使用hive来举例演示一下:
-- 举例:创建一个表
CREATE TABLE employee (
name STRING,
age INT
);
INSERT INTO employee VALUES
('Alice', 25),
('Bob', 30),
('Charlie', 35),
('David', 40);
问题:查询名字里带 "i" 的人
一、like模糊查询(like关键字)
select * from employee where name like '%i%';
查询结果:
二、locate(字符串,字段名)
说明:返回某个字符串在某个字段中第一次出现的位置,如果要是没有找到,返回0
select * from employee where locate('i',name)>0 ;
查询结果:
三、 instr(字段名,字符串)
说明:返回某个字符串在某个字段中第一次出现的位置,如果要是没有找到,返回0
select * from employee where instr(name,'i')>0 ;
查询结果:
四、regexp_extract(subject, pattern, index)
说明:
- subject是要判断的字段名;
- pattern是要匹配的字符串;
- 0表示从整个匹配结果中获取整个字串。
如果返回的字符串不为空,则说明匹配到了,即包含字符串'i',否则不包含。
select * from employee where regexp_extract(name,'i',0)!='';
查询结果: