- ベストアンサー
WHEREでヌルをスルーしたい
いつもお世話になっております。 SQL文のワイルドカードについての質問なのですが、 SELECT 項目1 FROM 表 WHERE 項目1 LIKE '%' というSQLがあったとして、私は項目1のレコードがすべて返されるのかと思いました。 しかしこれだと項目1フィールドにNULLが入っている(何もデータが入っていない)場合、それは除かれてしまうようです。 NULLのレコードも含めてクエリを返してくれるような条件はあるのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
where 使わなければ全部返ってきますけど…。 どうしても、where を使いたければ where XXX like '%' or XXX is null とか。
その他の回答 (4)
補足: ? DBSelect("select * from table1 where isNull(項目_1, '') Like '%'") 1;aa02; 2;aa01; 3;; 4;bb01; 5;bb02;
<Table1> ID___項目_1 1____aa02 2____aa01 3 4____bb01 5____bb02 [イミディエイトウインドウ] ? DBSelect("select * from table1 where isNull(項目_1, 'a') Like 'a%'") 1;aa02; 2;aa01; 3;; こういうやり方も出来ないではないです。
- chukenkenkou
- ベストアンサー率43% (833/1926)
#2回答者です。 #1さんの言う通りですね。今回の場合は、where句自体を書かず無条件の検索にすれば全件検索できます。
- chukenkenkou
- ベストアンサー率43% (833/1926)
特定の列の値がNULLの行を条件指定して検索するには、 「列名 is null」 の条件を指定する必要があります。 これは標準SQLでもそうであり、SQL Serverに限らず多くのRDBMSも同様です。 今回の場合ですと、 「select 項目1 from 表名 where 項目1 like '%' or 項目1 is null」 になります。 なお、「項目1=null」という条件も書けますが、これは「項目1がnullの場合、真」という意味にはならず、「真になることはない」条件指定になるので注意してください。
お礼
それです!! 全部というか、WHEREで条件に引っかかったやつとヌルのを戻したかったので 。 早速試してみます^^ ありがとうございました!