• ベストアンサー

異常?なカラムのデータについて教えて下さい。

異常?なカラムのデータについて教えて下さい。 あるテーブルを全件出してみたところ、あぁNULLデータが入っているレコードがあるなーと気づきました。 抽出データには不要だったので“カラム IS NOT NULL”をしてみたのですがNULLデータを持ったレコードが排除できません。 別の方法で “カラム = ''” とか “カラム like '%%'” なんてやってみたのですがデータがNULLになっているものが排除できません。 これは不具合なのでしょうか?

  • mr-r00
  • お礼率93% (480/516)
  • Oracle
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

>カラム IS NOT NULL と言う事は、別の方法と言うのは カラム <> '’ ですよね。 多分、空文字が入っていると思われるので、 カラム IS NOT NULL AND カラム <> CHR(0) では、どうでしょう。 それでも除外できないのであれば、NULLでも空文字でもない値、例えばスペースとかが入ってるのでは? そのカラムを DUMP関数か RAWTOHEX で表示してみてください。 何か入っていると思います。

mr-r00
質問者

お礼

大変助かりました ありがとうございあmした

その他の回答 (1)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

#1 です。 訂正。 >カラム <> '’ ↓ カラム <> ''

mr-r00
質問者

お礼

ありがとうございました

関連するQ&A

  • 1レコードのデータを複数行に分け通し番号を付ける

    Access2010にて、1レコードのデータを複数行に分け、追番毎に通し番号を付ける方法がわからず困っています。 テーブル1の様に、1レコードにはデータ格納するカラムが4つしかなく、同じ追番でデータが5個以上ある場合は、次のレコードに同じ追番を入力して5個目以降のデータを格納しているテーブルがあります。 テーブル1 追番 カラム1 カラム2 カラム3 カラム4 1 データ1 2 データ1 データ2 データ3 データ4 2 データ5 データ6 データ7 3 データ1 4 データ1 ・ ・ ・ これをテーブル2の様に1レコードにデータ1個づつ格納し、追番毎の番号を振りたいと思います。 テーブル2 追番 番号 データ 1 1 データ1 2 1 データ1 2 2 データ2 2 3 データ3 2 4 データ4 2 5 データ5 2 6 データ6 2 7 データ7 3 1 データ1 4 1 データ1 ・ ・ ・ クエリ1の様なユニオンクエリで近いかたち(テーブル3)にできたのですが、同じ追番で番号が1~4まで埋まったら、5以降の番号を降る方法が分かりません。 クエリ1 SELECT 追番, 1 AS 番号, カラム1 AS データ FROM テーブル1 WHERE カラム1 Is Not Null UNION ALL SELECT 追番, 2 AS 番号, カラム2 AS データ FROM テーブル1 WHERE カラム2 Is Not Null UNION ALL SELECT 追番, 3 AS 番号, カラム3 AS データ FROM テーブル1 WHERE カラム3 Is Not Null UNION ALL SELECT 追番, 4 AS 番号, カラム4 AS データ FROM テーブル1 WHERE カラム4 Is Not Null; テーブル3 追番 番号 データ 1 1 データ1 2 1 データ1 2 1 データ5 2 2 データ2 2 2 データ6 2 3 データ3 2 3 データ7 2 4 データ4 3 1 データ1 4 1 データ1 ・ ・ ・ よろしくお願いします。

  • MYSQLで全てのカラムから検索する。

    tbというテーブルのbangというカラムに4が含まれていれば表示というのは select * from tb where (bang) like '%4%' ; という形になりますが、このtbテーブルにさらにname,tukiというカラムがあったとして カラムに関係なくレコードのどこかに4が入っていれば抽出するというSQL文が書きたいです。 select * from tb where bang like '%4%' or name like '%4%' or tuki like '%4%' ; と書くことで何とか今まではやってきたのですが、カラム数が増えてきてしまったので、ものすごく長いSQL文なってしまいました。 もう少しスマートにする方法はありませんか?

    • ベストアンサー
    • MySQL
  • selectで抽出したデータの特定カラムを空に

    selectで抽出したデータの特定カラムのデータを空にしたいのですが、どのような方法がありますでしょうか。 以下のようなofficeテーブルがありまして、データは1万件あったとします。 id name place  1 浅谷 大阪 2 亀山 東京 3 武本 名古屋 placeカラムに東京を含むidが5000未満のデータを抽出し、そのデータのplaceカラムをすべて空に(削除)したいと思っています。 SELECT * FROM office WHERE place like '%東京%' and id < 5000 order by id asc; 上記のselect構文で希望データを抽出することはできたのですが、その抽出したデータのplaceカラムを空に(データを削除)する方法が分かりません。 アドバイス頂けると助かります。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • クエリがうまくいきません

    WinMe,Access2000,Excel2000を使用しています。 練習で名簿を作成してみましたが、 クエリがうまくいきません。 100レコードあるテーブルからクエリを作り、 「人名」フィールドの抽出条件を「Like "*"」としました。 人名を記入していないレコードが40ある場合は 記入のある60レコードが抽出されると思うのですが、 クエリのレコード数は100のままです。 条件を「is not null」に変えても変化ありません。 データシートビューで、人名が空欄になっている レコードの所で非選択フィルタをかけてみても 変化が無いところを見ると、見た目は空欄でも 実際は空欄ではないのだと思います。 テーブルを、エクセルからのインポートで 作ったのがいけなかったのでしょうか。 解決策をネットで捜してみたのですが、 検索の仕方が悪かったのか、見当たりませんでした。 方法を教えて頂けると大変ありがたいです、 宜しくお願い致しますm(_ _)m

  • 不一致クエリでnullまで抽出されてしまいます

    質問です。 現在、accessにて不一致クエリを使用し、テーブルAをチェックし、 マスタテーブルに無い情報が書かれてしまっているフィールドがある場合 抽出して確認をする、というクエリを作りたいと考えています。 不一致クエリにて自動で入る「is null」を使用すると マスタテーブルに無い事が書いてあるレコードは抽出するのですが (逆になぜis nullで相違するレコードが抽出されるのか理解に苦しんでもいるのですが) is nullですので、nullのレコードも抽出されてしまいます。 抽出条件として、マスタテーブルと相違するもの&nullは抽出しない、としたいのですがお知恵を拝借出来ませんでしょうか。 よろしくお願いいたします。

  • sql文のwhere句について

    <環境>sqlserver SQLでパラメータが空白であれば全件取得、パラメータに値が設定されている場合には 条件にHITするデータを抽出したいのですが、一本のクエリで抽出することができるのでしょうか? 空白時パラメータは以下のとおり入ってきます。 @no="" …完全一致 @name="%%" …部分一致 例) SELECT * FROM テーブル WHERE (NO = @no) and ((@name IS NULL) OR (@name IS NOT NULL) AND (NAME LIKE @name)) NAMEは上記クエリにて取得できています。 NOのところはどのようにすればよいでしょうか?

  • テーブルの結合時に空のカラムに『NULL』を入れない方法について

    宜しくお願いします。 MySQLでleft joinでテーブルの結合を行った際に、表示に必要なカラムのみを定義した場合に、空のカラムに『NULL』が入ってしまい、絞込みで検索時にこの『NULL』が邪魔になり、きちんと検索できません。left joinでテーブルを結合する場合に空のカラムに『NULL』が入らない様にする方法はありますか? クエリ文 select a.column1,b.column2 from a left join b on a.column3 = b.column3 where column2 like '%%'; 上記の様に検索した場合、likeで曖昧検索の上、検索内容を指定していないので、全データが検索されるかと思ったのですが、テーブルbのcolumn2が空のカラムは検索されず、HIT数が減ります。このwhereは必須で、どうしても入れなければならない状況なので、空のカラムも検索する方法があると助かります。 何卒、ご教授の程、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Accessから”表名.カラム名”でデータが取り出せない

     Java(sdk1.4.2)よりSQLを発行し、Access(2002)のMDBを操作しています。 複数テーブルをJoinで接続し、データを抽出しているのですが、対象2テーブルに同じ"haneibi"と云う項目が有るので、レコードセットからの取り出し処理の際に” wk_T1haneibi = rs.getString("表名.haneibi”)と云う記述をした所、SQLException Column Not Foundで処理が終了してしまいます。 wk_T1haneibiはStringで、haneibiも文字型のデータが入っています。 過去、表名.カラム名で修飾をした際、同じ事態に陥り、ユニークなカラム名だったので表名の修飾を外した所、事態が解消しました。今回は重複名を変更出来ない為、安易な回避が出来ず困っております。 尚、Joinのパラメータでは”表名.カラム名”の修飾が何故か問題なく出来ています。 事態解消にお手をお貸し下さいまし。

    • ベストアンサー
    • Java
  • アクセスのフィルタ nullについて。

    質問です。 アクセスのテーブルの中で、あるフィールド(フィールド名:管理番号)が空白のものだけ抽出したいのです。フィルターで、管理番号箇所に「Is Null」としたのですが、実際空白になっているデータがうまく抽出されません。 で、「Is Not Null」で抽出するとそれらのデータが抽出されます。 そのデータの認識ではnullになってないようです。 (でも実際空白です。) どうやったらnullで抽出されるでしょうか? ちなみにそのフィールドのデータ型はテキスト型です。

  • 別のテーブルのフィールドを抽出項目にするには?

    別のテーブルのフィールドを抽出項目にするには? Access初心者です。 申し訳ありませんが、急ぎ回答いただきたく思います。 どうか宜しくお願いいたします。 お伺いしたい内容は、 データが多く、抽出条件も多いので、 別のテーブルのフィールドに入っている単語を使い、 抽出したい元データのレコードをあいまい検索して非表示にしたいです。 データの内容は下記になります。 --------------------------------------- 元データ(テーブル1とテーブル2から結合したクエリ(名前は元データ) フィールド1 フィールド2 ID-1     りんご ID-2     バナナ ・       ・ ・       ・ ・       ・ ID-2000    チェリー --------------------------------------- --------------------------------------- 除外リスト(テーブル3。名前は除外リスト) フィールド1 りんご チェリー ・ ・ ・ --------------------------------------- 元データのフィールド2に Not Like "*りんご*" And Not Like "*チェリー*" と記述すれば、フィールド2にりんご、チェリーを含むレコード以外のものが表示され、 欲しい情報が手に入るのですが、(上記例だとバナナのみ表示される) 実際にはりんご、チェリーなどあいまい検索し、非表示にしたいキーワードが100個あります。 なので、除外リストというテーブルをつくり、 そのフィールド内に書かれたキーワードを使い Not Like "*りんご*" And Not Like "*チェリー*" と同じような表示結果になるようにしたいのですが、 やり方が調べてもどうしてもわかりません。 どうか皆様のお力を貸してください。 宜しくお願いいたします。