select count(1) 来自表名,其中 column=column
select count(1) from tablename where column=column
面试问题:
- 我们有 table 名称 = tablename 和一些列。
- 我们不知道列类型。
- SQL 请求:
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.
面试问题:
- 我们有 table 名称 = tablename 和一些列。
- 我们不知道列类型。
- SQL 请求:
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.