select count(1) 来自表名,其中 column=column

select count(1) from tablename where column=column

面试问题:

此请求的结果是什么return,为什么?

这 returns column 不为空的行数,因为 NULL = NULL 产生 UNKNOWN,在条件中计算为 false。对于所有其他值,column = column 为真。

可能会发生 "strage" 事情:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> create table clobTab( c clob);

Table created.

SQL> select count(1) from clobTab where c=c;
select count(1) from clobTab where c=c
                                   *
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CLOB

这取决于数据类型。在大多数情况下,它 returns count() of not null columns。 但是举个例子。

create table test_abc(column_name blob);
select count(1) from test_abc where column_name = column_name;

ORA-00932: inconsistent datatypes: expected - got BLOB

当 column = column 为真时,此查询将 return 以字段名(无列名)计数

else return 0 当 column= column 为 false.