6.2 where 语句
使用where子句,将不满足条件的行过滤掉
where子句紧随from子句
| 操作符 | 支持的数据类型 | 描述 | 
|---|---|---|
| A=B | 基本数据类型 | 如果A等于B则返回TRUE,反之返回FALSE | 
| A<=>B | 基本数据类型 | 如果A和B都为NULL,则返回TRUE,其他的和等号(=)操作符的结果一致,如果任一为NULL则结果为NULL | 
| A<>B, A!=B | 基本数据类型 | A或者B为NULL则返回NULL;如果A不等于B,则返回TRUE,反之返回FALSE | 
| A<B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A小于B,则返回TRUE,反之返回FALSE | 
| A<=B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A小于等于B,则返回TRUE,反之返回FALSE | 
| A>B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A大于B,则返回TRUE,反之返回FALSE | 
| A>=B | 基本数据类型 | A或者B为NULL,则返回NULL;如果A大于等于B,则返回TRUE,反之返回FALSE | 
| A [NOT] BETWEEN B AND C | 基本数据类型 | 如果A,B或者C任一为NULL,则结果为NULL。如果A的值大于等于B而且小于或等于C,则结果为TRUE,反之为FALSE。如果使用NOT关键字则可达到相反的效果。 | 
| A IS NULL | 所有数据类型 | 如果A等于NULL,则返回TRUE,反之返回FALSE | 
| A IS NOT NULL | 所有数据类型 | 如果A不等于NULL,则返回TRUE,反之返回FALSE | 
| IN(数值1, 数值2) | 所有数据类型 | 使用 IN运算显示列表中的值 | 
| A [NOT] LIKE B | STRING 类型 | B是一个SQL下的简单正则表达式,如果A与其匹配的话,则返回TRUE;反之返回FALSE。B的表达式说明如下:‘x%’表示A必须以字母‘x’开头,‘%x’表示A必须以字母’x’结尾,而‘%x%’表示A包含有字母’x’,可以位于开头,结尾或者字符串中间。如果使用NOT关键字则可达到相反的效果。 | 
| A RLIKE B, A REGEXP B | STRING 类型 | B是一个正则表达式,如果A与其匹配,则返回TRUE;反之返回FALSE。匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串A相匹配,而不是只需与其字符串匹配。 | 

实例操作:
(1)查询出薪水等于5000的所有员工
    select * from emp where sal=1000;
(2)查询工资在500到1000的员工信息
    select * from emp where sal between 500 and 1000;
(3)查询comm为空的所有员工信息
    select * from emp where comm is null;
(4)查询工资是1500和5000的员工信息
    select * from emp where sal IN (1500, 5000);
like 和 rlike
like
选择类似的值. 类似字符串操作的是否包含.
%代表零个或多个字符(任意个字符)。_代表一个字符。 可以认为他们两个是占位符
实例:
(1)查找以2开头薪水的员工信息
hive (default)> select * from emp where sal LIKE '2%';
(2)查找第二个数值为2的薪水的员工信息
hive (default)> select * from emp where sal LIKE '_2%';
rlike
rlike 子句是 Hive 中对 like 的一个扩展,其可以通过 Java 的正则表达式这个更强大的工具.
查找名字含有字母 a或者b或者c的员工
参考地址: