2016-08-11 3 views
2

質問テーブル名から:SELECT COUNT(1)列=インタビューから列

  • 我々は名=テーブル名といくつかの列を持つテーブルがあります。
  • カラムタイプがわかりません。
  • SQL要求:この要求リターンを何結果select count(1) from tablename where column=column

、なぜ?

+0

結果がどうなるかは間違いありません。それは '0' - ' count(*)x count(*) 'の範囲にあります。 – SomeJavaGuy

+0

あなたはどうしてそうだと思いますか? –

+1

あなたは列について何も言わず、価値もない:すべての値が 'null'の場合、比較' column = column'は動作しません( 'column is null'が必要です) '0'の結果を返します。すべての値が同じ場合、結果は 'count(*)'になります。そして、ここに保存されているデータに関する情報を持っていないと、この範囲のどこかにいるでしょう。編集:申し訳ありませんが、私の悪い上端はちょうど 'カウント(*)'になります。つまり、この列に 'not null'値の数を返します。 – SomeJavaGuy

答えて

4

columnがヌルでない行の数を返します。これは、がUNKNOWNであり、条件がfalseと評価されるためです。その他の値はすべてcolumn = columnです。

+0

私は全く同意します – Plirkee

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

これは、データ型からによって異なります。ほとんどの場合、NULLでない列の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

0

列=列が列=列がfalseの場合、他の

は0を返すtrueの場合。このクエリは、フィールド名(なし列名)と、カウントを返します。