大数据全系列 教程
1869个小节阅读:468k
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
通常用在where语句、having语句、join ... on
运算符 | 类型 | 说明 |
---|---|---|
A = B | 所有原始类型 | 如果A与B相等,返回TRUE,否则返回FALSE |
A == B | 无 | 失败,因为无效的语法。 SQL使用”=”,不使用”==”。 |
A <> B | 所有原始类型 | 如果A不等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A < B | 所有原始类型 | 如果A小于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A <= B | 所有原始类型 | 如果A小于等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A > B | 所有原始类型 | 如果A大于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A >= B | 所有原始类型 | 如果A大于等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A IS NULL | 所有类型 | 如果A值为”NULL”,返回TRUE,否则返回FALSE |
A IS NOT NULL | 所有类型 | 如果A值不为”NULL”,返回TRUE,否则返回FALSE |
A LIKE B | 字符串 | 如 果A或B值为”NULL”,结果返回”NULL”。字符串A与B通过sql进行匹配,如果相符返回TRUE,不符返回FALSE。B字符串中 的””代表任一字符,”%”则代表多个任意字符。例如: (‘foobar’ like ‘foo’)返回FALSE,( ‘foobar’ like ‘foo _ _’或者 ‘foobar’ like ‘foo%’)则返回TURE |
A RLIKE B | 字符串 | 如 果A或B值为”NULL”,结果返回”NULL”。字符串A与B通过java进行匹配,如果相符返回TRUE,不符返回FALSE。例如:( select 'foobar' rlike 'foo')返回FALSE,(select 'foobar' rlike '^f.*r$'; )返回TRUE。 |
A REGEXP B | 字符串 | 与RLIKE相同。 |
A [NOT] BETWEEN B AND C | 基本数据类型 | 如果A,B或者C任一为NULL,则结果为NULL。如果A的值大于等于B而且小于或等于C,则结果为TRUE,反之为FALSE。如果使用NOT关键字则可达到相反的效果。 |
A IN(val1,val2) | 所有数据类型 | 列A的值在列表中出现过的 |
案例实战:
xxxxxxxxxx
# 查询工资等于1600的
hive> select * from emp where sal = 1600;
OK
7499 allen salesman 7698 1981-2-20 1600.0 300.0 30
Time taken: 0.313 seconds, Fetched: 1 row(s)
# 查询工资 [1000,2000]所有雇员
hive> select * from emp where sal between 1000 and 2000;
OK
7499 allen salesman 7698 1981-2-20 1600.0 300.0 30
7521 ward salesman 7698 1981-2-22 1250.0 500.0 30
7654 martin salesman 7698 1981-9-28 1250.0 1400.0 30
7844 turner salesman 7698 1981-9-8 1500.0 0.0 30
7876 adams clerk 7788 1987-5-23 1100.0 NULL 20
7934 miller clerk 7782 1982-1-23 1300.0 NULL 10
Time taken: 0.31 seconds, Fetched: 6 row(s)
# 查询工资不在 [1000,2000]区间的所有雇员 <1000 和 >2000的
hive> select * from emp where sal not between 1000 and 2000;
OK
7369 smith clerk 7902 1980-12-17 800.0 NULL 20
7566 jones manager 7839 1981-4-2 2975.0 NULL 20
7698 blake manager 7839 1981-5-1 2850.0 NULL 30
7782 clark manager 7839 1981-6-9 2450.0 NULL 10
7788 scott analyst 7566 1987-4-19 3000.0 NULL 20
7839 king president NULL 1981-11-17 5000.0 NULL 10
7900 james clerk 7698 1981-12-3 950.0 NULL 30
7902 ford analyst 7566 1981-12-3 3000.0 NULL 20
Time taken: 0.305 seconds, Fetched: 8 row(s)
#查询 comm列的值为null的
hive> select * from emp where comm is null;
OK
7369 smith clerk 7902 1980-12-17 800.0 NULL 20
7566 jones manager 7839 1981-4-2 2975.0 NULL 20
7698 blake manager 7839 1981-5-1 2850.0 NULL 30
7782 clark manager 7839 1981-6-9 2450.0 NULL 10
7788 scott analyst 7566 1987-4-19 3000.0 NULL 20
7839 king president NULL 1981-11-17 5000.0 NULL 10
7876 adams clerk 7788 1987-5-23 1100.0 NULL 20
7900 james clerk 7698 1981-12-3 950.0 NULL 30
7902 ford analyst 7566 1981-12-3 3000.0 NULL 20
7934 miller clerk 7782 1982-1-23 1300.0 NULL 10
Time taken: 0.335 seconds, Fetched: 10 row(s)
#查询 comm列的值不为null的
hive> select * from emp where comm is not null;
OK
7499 allen salesman 7698 1981-2-20 1600.0 300.0 30
7521 ward salesman 7698 1981-2-22 1250.0 500.0 30
7654 martin salesman 7698 1981-9-28 1250.0 1400.0 30
7844 turner salesman 7698 1981-9-8 1500.0 0.0 30
# 查询工资1500或1600的所有雇员
hive> select * from emp where sal in (1500,1600);
OK
7499 allen salesman 7698 1981-2-20 1600.0 300.0 30
7844 turner salesman 7698 1981-9-8 1500.0 0.0 30
like和rlike:模糊查询,查询指定列中包含关键字的。
通配符:
% 代表0个或多个任意字符
_ 代表1个任意字符
rlike:是hive中的一个扩展功能,可以通过正则表达式指定匹配的条件。
案例实战:
xxxxxxxxxx
#查询名称以字符m开头的所有雇员
hive> select * from emp where ename like 'm%';
OK
7654 martin salesman 7698 1981-9-28 1250.0 1400.0 30
7934 miller clerk 7782 1982-1-23 1300.0 NULL 10
Time taken: 0.282 seconds, Fetched: 2 row(s)
#查询名称中第二字符是m的所有雇员的信息
hive> select * from emp where ename like '_m%';
OK
7369 smith clerk 7902 1980-12-17 800.0 NULL 20
Time taken: 0.335 seconds, Fetched: 1 row(s)
# like查询名称中包含m的所有雇员的信息
hive> select * from emp where ename like '%m%';
OK
7369 smith clerk 7902 1980-12-17 800.0 NULL 20
7654 martin salesman 7698 1981-9-28 1250.0 1400.0 30
7876 adams clerk 7788 1987-5-23 1100.0 NULL 20
7900 james clerk 7698 1981-12-3 950.0 NULL 30
7934 miller clerk 7782 1982-1-23 1300.0 NULL 10
Time taken: 0.293 seconds, Fetched: 5 row(s)
# rlike查询名称中包含m的所有雇员的信息
hive> select * from emp where ename rlike '[m]';
OK
7369 smith clerk 7902 1980-12-17 800.0 NULL 20
7654 martin salesman 7698 1981-9-28 1250.0 1400.0 30
7876 adams clerk 7788 1987-5-23 1100.0 NULL 20
7900 james clerk 7698 1981-12-3 950.0 NULL 30
7934 miller clerk 7782 1982-1-23 1300.0 NULL 10
Time taken: 0.262 seconds, Fetched: 5 row(s)