如何在sql中同时测试null而不是null?

joh*_*nny -1 sql oracle oracle11g

我有这个sql:

select * from employees
where
lastname like '%smith%' and firstname like '%bob%' and middle like '%%'
Run Code Online (Sandbox Code Playgroud)

问题是名称的值,特别是中间名,可以为null.所以上面的陈述会发现:

  smith, bob mike
Run Code Online (Sandbox Code Playgroud)

但是找不到

  smith, bob
Run Code Online (Sandbox Code Playgroud)

因为鲍勃的中间名是空的(他没有中间名.)

我有这个有效,但我认为有一个更好的方法,并希望输入:

    select * from employees
    where
    lastname like '%smith%' 
    and firstname like '%bob%' 
    and (middle like '%%' or middle is null)
Run Code Online (Sandbox Code Playgroud)

编辑:

中间并不总是空白.有时它会有一个值,所以我必须保持中间名的测试.它可以填充或null.

谢谢.如果重要的话,我正在使用Oracle 11g.

rua*_*akh 5

middle like '%%' or middle is null
Run Code Online (Sandbox Code Playgroud)

始终为true:要么middle为null,在这种情况下middle is null为true,要么包含一个或多个字符,在这种情况下middle like '%%'为true.所以你可以写:

select * from employees
where
lastname like '%smith%' and firstname like '%bob%'
Run Code Online (Sandbox Code Playgroud)