4

次のコードは、exchange 列が null であるテーブル内のすべてのレコードを表示することを期待していますが、結果セットには 0 行が表示されます。理由はありますか?

SELECT * FROM pubco WHERE exchange IS NULL;
4

4 に答える 4

5

''どちらが同じではないと解釈したかもしれませんがNULL、これを試してください

SELECT * 
FROM pubco 
WHERE exchange IS NULL OR
      exchange = ''

それでも値が取得されない場合は、スペースが含まれている可能性があるため、値を取得する必要がありますTRIM

SELECT * 
FROM pubco 
WHERE exchange IS NULL OR
      TRIM(exchange) = ''
于 2013-01-11T14:16:14.843 に答える
0

this クエリを使用するのではなく

SELECT * 
FROM pubco 
WHERE exchange IS NULL OR
      exchange = ''

これを試して

SELECT * FROM pubco 
WHERE isnull(exchange,'')='';

それはあなたのパフォーマンスを向上させます。

于 2013-01-11T14:24:14.997 に答える
0

1 つの重要な注意点: NULLand ''(つまり空の文字列) は同じものではありません。ほとんどの場合、列には空の文字列が含まれているため、別の条件を設定する必要があります。

SELECT * FROM pubco WHERE (exchange IS NULL OR exchange = '');
于 2013-01-11T14:17:28.600 に答える
0

それらがnullであると確信していますか?

たぶん、それらは同じではない文字列値「NULL」を持っています。もしそうなら、それは何を返しますか:

SELECT * FROM pubco WHERE exchange == "NULL";
于 2013-01-11T14:17:36.597 に答える