从tablename中选择count(1),其中column = column

时间:2016-08-11 07:21:46

标签: sql oracle select-query

采访问题:

  • 我们有一个名称= tablename和一些列的表。
  • 我们不知道列类型。
  • SQL请求:select count(1) from tablename where column=column

此请求返回的结果是什么?为什么?

4 个答案:

答案 0 :(得分:4)

这将返回column不为空的行数,因为NULL = NULL会在条件中计算出UNKNOWN false。对于所有其他值column = column都是真的。

答案 1 :(得分:3)

它取决于数据类型。在大多数情况下,它返回非空列的count()。 但是例如。

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

答案 2 :(得分:1)

可能会发生“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

答案 3 :(得分:0)

当column = column为true时,此查询将返回带有字段名称(无列名称)的计数

当column = column为false时,

else返回0。