• ベストアンサー

WHEREでヌルをスルーしたい

いつもお世話になっております。 SQL文のワイルドカードについての質問なのですが、 SELECT 項目1 FROM 表 WHERE 項目1 LIKE '%' というSQLがあったとして、私は項目1のレコードがすべて返されるのかと思いました。 しかしこれだと項目1フィールドにNULLが入っている(何もデータが入っていない)場合、それは除かれてしまうようです。 NULLのレコードも含めてクエリを返してくれるような条件はあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cagoo
  • ベストアンサー率50% (1/2)
回答No.1

where 使わなければ全部返ってきますけど…。 どうしても、where を使いたければ where XXX like '%' or XXX is null とか。

guttten
質問者

お礼

それです!! 全部というか、WHEREで条件に引っかかったやつとヌルのを戻したかったので 。 早速試してみます^^ ありがとうございました!

その他の回答 (4)

noname#140971
noname#140971
回答No.5

補足: ? DBSelect("select * from table1 where isNull(項目_1, '') Like '%'") 1;aa02; 2;aa01; 3;; 4;bb01; 5;bb02;

noname#140971
noname#140971
回答No.4

<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;; こういうやり方も出来ないではないです。

回答No.3

#2回答者です。 #1さんの言う通りですね。今回の場合は、where句自体を書かず無条件の検索にすれば全件検索できます。

回答No.2

特定の列の値がNULLの行を条件指定して検索するには、 「列名 is null」 の条件を指定する必要があります。 これは標準SQLでもそうであり、SQL Serverに限らず多くのRDBMSも同様です。 今回の場合ですと、 「select 項目1 from 表名 where 項目1 like '%' or 項目1 is null」 になります。 なお、「項目1=null」という条件も書けますが、これは「項目1がnullの場合、真」という意味にはならず、「真になることはない」条件指定になるので注意してください。

関連するQ&A

  • UNION ALLのように順番がありNULLを返す方法

    SQL初心者です。ACCESSデータベースに対するクエリを書いているのですが、 条件を配列として、その配列の順番に応じたSELECT文を書きたいのです。 SELECT * FROM access_db WHERE ID = '条件' UNION ALL SELECT * FROM access_db WHERE ID = '条件' UNION ALL SELECT * FROM access_db WHERE ID = '条件' UNION ALL... といった具合にSQL文を作成しているのですが、これでは見つからない条件がある場合に、行が繰り上がり条件を格納した配列とはずれが生じてしまいます。 見つからなかった場合にNULLまたはそれを表せる何かを抽出結果として組み込むことはできますか? SQL初心者のためUNION ALL程度しか近いものが見つけられなく、困っています。 どなたかよろしくお願いします。

  • SELECT * FROM tbl WHERE a = ?;

    SELECT * FROM tbl WHERE a = ?; 上記のSQL文で、?の部分がnullだとWHERE条件を無い状態に(SELECT * FROM tbl) のようにするにはどうすればいいでしょうか?

  • nullと文字数について

    いつもお世話になっています。 select 項目1 from テーブル where 項目1 is null or length(項目1)>=0 質問1 上記SQLを作成した場合、全レコードが抽出されるのでしょうか? 疑問1 (1)項目1が空白一つの場合、length(項目1)>=0となる? (2)nullと空文字の違いがいまいちわからない。 以上、よろしくお願いします。

  • MySQL WHERE句のLIKE検索

    初心者ですみません。 MySQL WHERE句のLIKE検索で、引っかかった文字列を 除いた項目を表示させるにはどうしたらいいでしょうか。 例えば、 SELECT * from [テーブル名] where [フィールド名] like '%あ%'; として、「あ」が入っているレコードを検索し、 該当しないレコードを表示させる。 どうか教えてください。よろしくお願いします。

  • ユニオンクエリでWHERE句を使うのは不可能でしょうか?

    アクセス2003です。 (select * from Q1) UNION ALL (select * from Q2) UNION ALL (select * from Q3); WHERE (((番号) Like "*001")); としても 「SQLステートメントの後に文字が見つかりました。」 となってしまいます。 「番号」と言うフィールドは Q1、Q2、Q3どのクエリにもあり (select * from Q1) UNION ALL (select * from Q2) UNION ALL (select * from Q3); のみなら正常に動作します。 作成したユニオンクエリで「フィルタの対象」で「*001」と入力したらちゃんと思い通りに動作します。 ユニオンクエリで条件抽出は不可能でしょうか? よろしくお願いします。

  • AccessのクエリでvbLfのみ抽出するには

    Access2010のクエリー(SQL)で vbLfかvbCrLfが含まれているレコードを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(10) & "*"; vbLfが含まれているレコードは抽出せず、 vbCrLfが含まれているレコードだけを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(13) & Chr(10) & "*"; でよいと思いますが、 vbCrLfが含まれているレコードは抽出せず、 vbLfが含まれているレコードだけを抽出するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。

  • ACCESS:Nullの扱い

    次のようなSQLがあります。 SELECT 住所.住所, 住所.備考 FROM 住所 WHERE (((住所.住所) Not Like "*佐賀県*")); 住所のフィールドにNullがありますが抽出されません。 WHERE (((住所.住所) Not Like "*佐賀県*")) OR (((住所.住所) Is Null)); とすると思い通りの結果になるのですが、なぜNullは「"佐賀県"を含まない」には含まれないのでしょうか。

  • select * from rooms where rtype like _____

    rtypeフィールドが5文字のレコードを得たいのですが [ODBC Microsoft Access Driver] クエリ式 'rtype like _____' の 構文エラー でした。 select * from rooms where rtype like _____ のどこがいけないのでしょうか?

  • MariaDBでのNULLの扱い方

    お世話になります。 MariaDBで作ってあるあるテーブルのひとつのフィールド "batch" にデータが入ってないために、コマンドプロンプト画面で見ると"NULL"と表示されています。添付したスクリーンショットの通りです。 ところがこれを select * from calreport where batch=NULL というコマンドを入れても empty set と表示されて、"batch" フィールドが NULL の物が表示されません。 NULL という値はどのように検出すればよいのでしょうか? 正しい select 文の書き方を教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • データベースのワイルドカードは%ではないの?

    アクセスのテーブルに あ い う があり、 SQL文で *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "%あ%")); *********************************************** としてもエラーにならないけど、「あ」が抽出されません。 *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "*あ*")); *********************************************** にすると、「あ」が抽出されます。 アクセスなどのデータベースのワイルドカードは%だと思っていたのですが違うのですか?