• ベストアンサー
  • 困ってます

データベースのクエリについて教えてください。

データベースのクエリについて教えてください。 電話番号カラムと携帯電話番号カラムが定義してあります。 どちらかのカラムにはデータが入っていて、その片方のカラムは空となっている場合、 電話番号か携帯電話番号の、どちらか空ではないデータのみを取り出したいのですが、 どのようなクエリにしたらよいでしょうか? よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数39
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.3

これがSQL Serverの質問で、要は「有効なデータを取出したい」という意味でしたら、以下のようにやればよいでしょう。 SELECT ISNULL(NULLIF(電話番号,''),NULLIF(携帯電話番号,''))

共感・感謝の気持ちを伝えよう!

質問者からのお礼

先日、お教えいただいた方法を試しまして、この方法が自分にバッチリでした。 ありがとうございました。

関連するQ&A

  • このクエリを教えてください

    ID、Name、Date、Pointのカラムがあり、レコードは300程度です。 データベースに登録されているデータで、Dateの最終日から2日間の データを一回のクエリ発行で取り出すようなクエリを作りたいのですが どのようになりますでしょうか? それともMAX(Date)で最終日を取り出して、それからBETWEENなどを つかって取得という2段階にクエリ実行するしかないでしょうか?

  • データベースの1要素に複数データを格納したい

    顧客管理データベースシステムを作成しようとしているのですが、 データベースの要素に複数データが入る場合の管理方法が 分からず困っています。 一例を挙げると、複数の電話番号を持つ人にも対応するように データベース設計をしようとした場合、どのようにするのが ベストなのかが分かりません。 電話番号1,電話番号2といったような要素を用意して、 データベースを検索するときには両方を参照する以外に 手は無いのでしょうか? それとも顧客番号と複数電話番号検索用IDのようなものを対応させ、 電話番号データベース(電話番号ID、電話番号1、電話番号2、電話番号3) のようなものを用意することで調べるのでしょうか? 正直、どちらもデータベース要素が3つ以上の場合に融通が利かなかったり まだるっこしい感じがしたりするのですが、代替手段を良く知りません。 何か良い方法ございましたら、ご教示願えませんでしょうか?

  • accessのクエリの結果に列を追加したい

    accessのクエリで抽出したデータを、宅急便のソフトにインポートしたいと考えています。 宅急便のソフトのフォームには、アクセスのクエリに無い列(項目)があります。 クエリの結果に、定型の列を追加することは可能でしょうか? よろしくお願いします。 【クエリの結果】 お客様名 住所 電話番号 【希望のクエリ】 お客様名 住所 電話番号 宅急便の種類←(この部分をクエリに追加したい。この部分のデータは常に0を表示) クエリは、テーブルにある項目しか表示できないのでしょうか?

その他の回答 (3)

  • 回答No.4
  • dda167
  • ベストアンサー率76% (55/72)

SQL ServerでもCOALESCE関数が使えるのではないですか? COALESCE(電話番号, 携帯電話番号)

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • root_16
  • ベストアンサー率32% (674/2096)

no.1です。 抜けてましたが、最後は抽出したデータを使って 電話番号と携帯電話番号の文字列を CONCAT関数で結合して下さい。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • root_16
  • ベストアンサー率32% (674/2096)

もっとうまいやり方があるかもしれませんが、 すぐ思いつくのは 電話番号が空かどうか判定するカラムF1(空のとき0、そうでないとき1) 携帯電話番号が空かどうか判定するカラムF2(空のとき0、そうでないとき1) 判定用カラムF3 (F1×10+F2) F3の組み合わせは 00:どちらも無い 01:携帯電話番号だけ有る 10:電話番号だけ有る 11:どちらも有る になるので、F3=01(実際は1)と10の場合を抽出すれば いいような気がします。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 難しいクエリなので教えてください。

    データベース:MYSQLのバージョン4です。 1ヶ月予約していない人を抽出せよ、というクエリです。 テーブルは 顧客テーブル(t_customer)と予約テーブル(t_yoyaku)です。 顧客テーブルのカラムは、顧客番号(no)、氏名(name)です。 予約テーブルのカラムは、顧客番号(no)と予約日付(day)です。 以下のようにレコードが登録されています。 顧客テーブル 顧客番号 氏名 1  鈴木太郎 2  佐藤一朗 3  高橋次郎 4  山田五郎 予約テーブル 顧客番号 予約日付 1  2008-4-10 1  2008-5-11 1  2008-6-12 1  2008-7-10 2  2008-5-12 2  2008-6-10 3  2008-6-11 3  2008-8-12 ※予約テーブルに登録されていない場合(山田五郎)も合わせて 抽出 すみませんが、上記のクエリについてどなたか 教えてください。お願いします。

    • ベストアンサー
    • MySQL
  • データベースのテーブルやカラム情報の取得

    データベースの定義を取得するSQL文を教えてください。 データベースはAccessとMySQLです。 得たい情報はデータベースにあるテーブルとカラムです。 例えば、テーブルがTblAとTblBがあって、 それぞれに整数型のFld1と文字型のFlb2があるとします。 この定義情報を取得したいのです。 テーブルだけでなくクエリ(ビュー)の定義情報も取得できるでしょうか。

    • ベストアンサー
    • MySQL
  • データベースの用語、クエリーに対する答えは?

    クエリーqueryがデータベースに対する質問、問い合わせ、だとすると、 その要求に対して帰ってくる答えのデータというのは 英語でいうと Ansawer でいいのでしょうか? 用語としてです。

  • Accessのデータベースでクエリでデータにシングルクォーテーションを持つと絶対にだめですか?

    Accessのデータベースでクエリでデータにシングルクォーテーションを持つと絶対にだめですか? 最近これで必ず落ちるソフトに出くわしました。 エラーメッセージ 3075 クエリー式 <式> の <メッセージ>

  • ACCESSクエリーについて(ユニーク数の抽出等)

    久しぶりにACCESSを触っているのですがバージョンも上がり、手間取っています(2010)。 テーブルに以下項目で1万レコード有ります 顧客ID 顧客名 サービス名 金額 電話番号 12345 山田花子  お花    2100 03-1234-5678 23456 太田太一  バラ    4200 03-4567-7890 45678 佐藤百合子 ゆり    3300 045-123-456 23456 太田太一  つぼ    5500 03-4567-7890  ・  ・ 電話番号はダブりもあります(複数回購入している人もいるため)。 1.電話番号がダブりの時にはそれは1とカウントし、電話番号のユニーク数を知りたい。 2.1のユニーク(電話番号)毎(電話番号で重複ある場合はその合計を加算する)の累積金額を出したい。 3.1でダブりがあった場合、ダブりの件数をユニーク(電話番号)毎に知りたい。 ※人によっては1行のみ、ヘビー購入者は10行あるといったように購入頻度はまちまちです 集計クエリー、選択クエリーで算出できないでしょうか。 (達人には基本的な質問だとおもい恐縮ですが御教授いただければ幸いです)

  • データベース名の取得

    定義したすべてのデータベース名およびカラムを取得するようなSQLはどのようなものでしょうか? 環境はWAMP+Postgres8.0です

  • どうしたらデータベースになりますか?

    メールフォームから頂いた情報(名前、住所、電話番号など)を簡単にデータベースにするにはどうすればいいですか。 レンタルーサーバーを使って、そこのメールフォームのCGIを使用しています。 データベースはphpMyadminを使用してみたいと思っています。

    • ベストアンサー
    • MySQL
  • エクセルで検索結果によってコピーを振り分けるには

    住所録をエクセルで整理しています。 このデータを住所管理ソフト、携帯データ管理ソフト、メールアドレス管理ソフトで共有したいと考えています。 そうしますと、同じメールアドレスでも管理形態が違うので複数のタイトル行が必要になります。 たとえば、あるソフトでは電話番号1、電話番号2とタイトルに書き、違うソフトでは電話会社、電話自宅とタイトルに記入しなければなりません。 そこで片方にデータを記入するともう片方にも自動で記入される方式を模索しています。 具体的に A電話番号1 B電話番号1タイプ C電話番号2 D電話番号2タイプ E電話番号3 F電話番号3タイプ G自宅電話 H会社電話 I携帯 J自宅FAX K会社FAX となります。 タイプは、一般電話、携帯電話、PHS、自宅、仕事、FAXとG~Kより多いです。 また、ある方は電話番号1に自宅を記入し、違う方には電話番号2に自宅を記入してあるデータになってしまっています。 何かよい方法はありますでしょうか? よろしくお願いします。

  • Accessの結合に詳しい方

    依頼に対し、Accessを用いて対応したいと思いますが、まずは依頼内容を説明します。 顧客リストがエクセル形式で送られてきます。 このリストには「電話番号」と「メールアドレス」の列がある。 社内データベースの顧客テーブルにも「電話番号」と「メールアドレス」に相当するフィールドがある。 依頼は、顧客リストにある「電話番号」か「メールアドレス」のどちらかがDBに実在する各顧客をピックアップしたいというものです。 具体的には、どちらか片方だけ存在する場合は「1」、両方存在する場合は「2」、 どちらもない場合は空欄を、顧客リストのそれ用の記録列に記載するイメージです。 この依頼に対応するため、Accessを用いたいと思います。 思いついた手順は以下です。 ・Accessで新規テーブルを作成し、顧客リストを全て貼り付ける。 ・顧客DBの全データをインポートする。(もちろん、別のテーブル) ・「電話」クエリを作り、顧客リストの電話番号と顧客DBの電話番号を結合キーとして内部結合する。 ・「電話」クエリを実行し、出てきた電話番号を持つ顧客について、顧客リストの記録列に「1」と記入。 ・同様に「アドレス」クエリを作り、実行し、どちらか片方だけ存在する場合は「1」、両方存在する場合は「2」と記入。 以上ですが、要するに、クエリを分けるのではなく、一度にやりたいと思います。 顧客リストの電話番号とアドレスについて、DBに片方のみDBに存在するか、両方存在するか区別しつつ、抽出することはできますか? よろしくお願いします。

  • ACCESSの入力フォームの質問です

    ACCESS初心者です。 1万人弱の携帯電話管理システムを作成中ですが、 判らないところが出てきて困っております。よろしくご指導ください。 電話番号をキーにしたテーブルにいくつかの表をJoinしたクエリを作成し、 電話番号の項目の抽出条件に[携帯電話番号を入力してください] を入れています。 そのクエリを元に単票形式の入力フォームを作成しています。 これを実行するとまず 「携帯電話番号を入力してください」と表示され携帯電話番号を 入力します。これで該当のレコードが表示されます。 必要な更新が済んだら「実行」(ビックリマーク)を押下して再度 「携帯電話番号を入力してください」を出して次の番号を入力。 削除したいときには「削除」(▲Xのようなマーク)で削除。 以上のように作りました。 このやり方自体、ベストなのかどうかわかりませんが一応はこれで 修正と削除ができるのですが、データ追加ができません。 「携帯電話番号を入力してください」のところで追加したい番号を 入力すると、全項目スペースの入力フォームが表示されて入力は できるのですが、肝心の電話番号の欄には、最初のダイアログで 指定した電話番号が連携されず 「フィールドに必要なプロパティがTrueに設定されているために  このフィールド”電話番号”にはNull値は挿入できません。  値を入力してください」 と表示されてしまいます。 ダイアログで指定した数値をフォームの該当フィールドに連結させて レコードを追加するにはどうしたらいいでしょうか? 判りにくい質問になっているかもしれませんが、よろしくお願いします。 ACCESSは2002です。