如果没有,为什么有人会使用abc,比如'%' ?
答案 0 :(得分:4)
试试吧?
drop table junk;
create table junk ( id number, col varchar2(10) );
insert into junk values ( 123, null );
insert into junk values ( 234, ' ' );
insert into junk values ( 345, 'asdf' );
commit;
select *
from junk
where col like '%'
/
ID COL
---------- ----------
234
345 asdf
所以不,就像大多数Oracle一样,direct compare不会看到NULL ...如果要检测NULL,请使用IS NULL。如果你想要排除NULL,请清除,并包括IS NOT NULL ..(即使这样的东西“看起来像”它也会消除它);)通过使用“IS NOT NULL”,任何阅读它的人都会更清楚代码。
相关链接: http://docs.oracle.com/cd/E11882_01/server.112/e41084/conditions007.htm#SQLRF52142
模式中的百分号(%)可以匹配值中的零个或多个字符(而不是多字节字符集中的字节)。 模式'%'无法匹配null。
答案 1 :(得分:3)
有效,是的。我已经看到它在人们想要传入类似条件参数时使用,以便它们可以将特定值,部分值或无值传递到select ... from ... where some_col like :some_parameter
形式的查询中。
ETA:我想指出,如果我在制作代码中看到where some_col like '%'
,那么编写它的人真的意味着where some_col is not null
我想我会有很多话要对他们说!后一种情况更具有自我描述性和清晰的意图,并且不会让人们摸不着头脑,想知道这个人写作时的想法是什么!