💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
`where`的字段必须是表中已有的字段,即使给字段起别名也不可以。 ```sql > select * from student; +-------------+---------------+--------------+--+ | student.id | student.name | student.age | +-------------+---------------+--------------+--+ | 1 | zhangsan | 20 | | 2 | lisi | 21 | | 3 | wangwu | 22 | | 4 | tianqi | 23 | +-------------+---------------+--------------+--+ -- 正常执行! select * from student where id=1; -- 正常执行!where id 是表中的id,不是id+1 as id中的id字段 select *, id as id from student where id=1; -- 因为id_as不是表中已有字段,语句错误! select *, id as id_as from student where id_as=1; --正常执行! select * from student where id+1=2; --因为id_one不是表中已有字段,语句错误! select *, id+1 as id_one from student where id_one=2; ``` :-: **比较运算符** | 符号 | 支持数据类型 | 描述 | | --- | --- | --- | | A`=`B | 基本数据类型 | 如果 A 等于 B 则返回 `true`,反之返回 `false` | | A`<=>`B | 基本数据类型 | 如果 A 和 B 都为 `NULL`,则返回 `true`,其他的和等号`=`操作符的结果一致,如果任一为`NULL`,则结果为 `NULL` | | A`<>`B,A`!=`B | 基本数据类型 | A 或者 B 为 `NULL` 则返回 `NULL`;<br/>如果 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(num1, num2)` | 所有数据类型 | 是否等于`num1`,或`num2`。 | | A `rlike` B, A `regexp` B | string类型 | B 是一个正则表达式,如果 A 与其匹配,则返回 true;反之返回 false。匹配使用的是 JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串 A 相匹配,而不是只需与其字符串匹配。 | | A `[not] like` B | string 类型 |匹配则返回true,否则返回false。<br/>(1)`like 'ABC%'`,匹配以ABC开头的字符串;<br/>(2)`like '%ABC'`,匹配以ABC结尾的字符串;<br/>(3)`like '%ABC%'`,匹配存在ABC的字符串;<br/>(4)`like '_A%'`匹配第2个字符为A的字符串;<br/>(5)`'like '__A%'`,匹配第3个字符为A的字符串;<br/>(6)`like '%A_'`,匹配倒数第2个是字符A的字符串;<br/>如果使用 `not` 关键字则可达到相反的效果。| ```sql (1)查询出薪水等于 5000 的所有员工 hive (default)> select * from emp where sal =5000; (2)查询工资在 500 到 1000 的员工信息 hive (default)> select * from emp where sal between 500 and 1000; (3)查询 comm 为空的所有员工信息 hive (default)> select * from emp where comm is null; (4)查询工资是 1500 和 5000 的员工信息 hive (default)> select * from emp where sal IN (1500, 5000); (5)查找以 2 开头薪水的员工信息 hive (default)> select * from emp where sal LIKE '2%'; (6)查找第二个数值为 2 的薪水的员工信息 hive (default)> select * from emp where sal LIKE '_2%'; (7)查找薪水中含有 2 的员工信息 hive (default)> select * from emp where sal RLIKE '[2]'; ``` <br/> :-: **比较运算符** | 符号 | 描述 | | --- | --- | | `and` | 逻辑并 | | `or` | 逻辑或 | | `not` | 逻辑否 | ```sql (1)查询薪水大于 1000,部门是 30 hive (default)> select * from emp where sal>1000 and deptno=30; (2)查询薪水大于 1000,或者部门是 30 hive (default)> select * from emp where sal>1000 or deptno=30; (3)查询除了 20 部门和 30 部门以外的员工信息 hive (default)> select * from emp where deptno not IN(30, 20); ```