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.
但
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)