不正确的号码。在SQL中获取的行数

时间:2014-11-24 16:44:34

标签: sql database oracle

请考虑名为Employee的表,其中包含以下两列:

  1. EmpId - Number(12)
  2. EmpType - Varchar2(2个字节)
  3. EmpType有两个有效值,ES或NULL。

    当我在查询下面开火时,我得到100行

    select * from Employee;
    

    下面的查询给了我60行:

    select * from Employee where EmpType = 'ES'
    

    虽然select * from Employee where EmpType <> 'ES'给了我0行。

    为什么这样?我应该得到40行,其中EmpType不是ES。

    我正在使用Oracle Sql DB。

2 个答案:

答案 0 :(得分:2)

Null不等于任何东西,甚至不等于null。所以说不等于ES,null 不等于ES。如果你明白我的意思。

因此,要获得所需的值,您需要is null

select * from Employee where EmpType is null

查看handling null values

上的这篇文章

编辑:正如@Allan所指出的,在Oracle中,空字符串相当于null。

答案 1 :(得分:0)

&#34;&lt;&gt;&#34;与数字一起使用不与nvarchar

所以你应该使用:

从员工中选择*,其中EmpType +&#39;&#39;喜欢&#39; null&#39;

从Empee为空的员工中选择*