• 締切済み

SQL文で複数列の更新をしたい。

SQL初心者です。 全レコードを対象にNULLが入ってるフィールドを半角スペースに更新したいのですが、SQL文で記述するにはどうしたらいいのでしょうか? 例えば 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111  NULL    A 佐藤 新宿  NULL      19450412  NULL 鈴木 池袋  03-1234-2222  19700522  B            ↓ 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111        A 佐藤 新宿          19450412   鈴木 池袋  03-1234-2222  19700522  B こんな感じです。 知恵をお貸しください。よろしくお願いいたします。

みんなの回答

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.3

#2の方の回答ですが、SETは1つでいいと思います。 また、NULLを変換する場合ISNULL()が使えます。 UPDATE 個人情報 SET 電話番号 = ISNULL(電話番号, ' '), 誕生日 = ISNULL(誕生日, ' '), 血液型 = ISNULL(血液型, ' ')

muskch
質問者

お礼

ご回答ありがとうございます。 無事できました。 また質問させていただく事があると思うのでその際はよろしくお願い致します。

  • taku183
  • ベストアンサー率0% (0/7)
回答No.2

これはどうでしょうか? update 個人情報 set 電話番号 = CASE 電話番号 WHEN NULL THEN ' ' ELSE 電話番号 END ,set 誕生日 = CASE 誕生日 WHEN NULL THEN ' ' ELSE 誕生日 END ,set 血液型 = CASE 血液型 WHEN NULL THEN ' ' ELSE 血液型 END ,…

muskch
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなってすみませんでした。 下の方と同じなのですが、 SQLServerのクエリアナライザで実行したところ、 2行目の=付近に・・・というメッセージで実行できませんでした。 無知で申し訳ないのですが、またアドバイスお願いします。

  • kameid
  • ベストアンサー率44% (8/18)
回答No.1

update 個人情報 set 誕生日 = '' where 誕生日 is null; update 個人情報 set 電話番号 = '' where 電話番号 is null; って感じでいいんじゃないでしょうか。

muskch
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなってすみませんでした。 SQLServerのクエリアナライザで実行したところ、 2行目の=付近に・・・というメッセージで実行できませんでした。 無知で申し訳ないのですが、またアドバイスお願いします。

関連するQ&A

  • SQLのDISTINCTで重複チェック

    宜しくお願いします WindowsXP pro Office2000で作っています 現在 テーブルA,テーブルB共に ナンバー・氏名・住所の3つのフィールドがあり Aに ナンバー 氏名 住所 0    田中 長崎県 1    佐藤 長崎県 2    田中 長崎県 というデータがあるとして SELECT DISTINCT 氏名, 住所 FROM A の結果をBに入れたいのですが 入れるときにナンバーを一緒にいれたいと思っています 田中のナンバーは0と3がありますが 入れるのはどちらでも構いません これはSQL文で可能でしょうか? どのようにしたらいいのか教えてください 宜しく願いします

  • SQL Server2005再帰クエリについて

    以下のような3階層のデータについて、以下の結果を得たいと思っています。再帰クエリを使用することになるかと思うのですが、どのようにクエリを作成すればよいでしょうか。アドバイスをお願いいたします。 <データ> 氏名   上司の氏名   階層    田中   Null        1   山田   田中       2 佐藤   山田       3 高田   山田       3 <結果> 氏名   部下の氏名    田中   山田 田中   佐藤 田中   高田 山田   佐藤 山田   高田 佐藤   Null 高田   Null ※ 部下の氏名は直下の部下だけでなく、直下の部下の、その下まで結果として返したい。

  • sql server 2008でjoinの使い方

    sql server 2008にて、joinの使い方について教えて下さい。 以下二つのテーブルがあります。 所属テーブル 名前 性別 所属 田中 男 経理部 田中 女 総務部 鈴木 女 経理部 佐藤 男 総務部 住所テーブル 名前 性別 住所 田中 男 杉並区 佐藤 男 中野区 鈴木 女 中央区 この二つのテーブルよりデータを取得し、以下のテーブルを作りたいです。 住所と所属テーブル 名前 性別 住所 所属 田中 男 杉並区 経理部 田中 女 null 総務部 鈴木 女 中央区 経理部 佐藤 男 中野区 総務部 但し、left join を使って、 所属テーブル.名前 = 住所テーブル.名前 and 所属テー ブル.性別 = 住所テーブル.性別 の条件を使用すると、女性の田中さんのデータが抽出されません(住所テーブルに登録されていないため、マッチングできていません)。どうすれば以上のテーブルが作られますか?

  • 【エクセル】縦に続いた表を横にして整理したい

    表題の通りですが、エクセル2003で、以下のようなことがしたいです。 [元データ]   A     B       1  氏名   田中 2  住所   東京 3  電話番号 *** 4  登録日  *** 5 6  氏名   鈴木 7  住所   埼玉 8  電話番号 *** 9  登録日  *** 10 11  氏名   佐藤 12  住所   埼玉 13  電話番号 *** 14  15 氏名   工藤 のように一人分のデータが、空白セル1マス空けて、延々と続いた様な表があります(3万行くらい)。 これを下記のように変更したいのです [整理後]   A    B    C    D    E 1 氏名   住所   電話番号  登録日 1 田中   東京   ***   *** 2 鈴木   埼玉   ***   *** 3 佐藤   埼玉   ***   (空白) 4 工藤    5 のような感じです。 3つ目の佐藤氏のデータのように元データに登録日という項目が無い場合があります。 それ以外の項目に関して順番や有無の違いはありません、1データの最終行にある登録日という 項目だけ有ったり無かったりします。 項目だけは縦のものを横に貼り付け、で出来たのですが、それが意外のデータを効率よく移すには どうしたら良いでしょうか。 関数、マクロを教えていただけたらありがたいです。こうしたら良いというアイデアだけでも助かります。どうか宜しくお願いします。 (説明不足のところがありましたらすいません…補足致します)

  • SQLのUPDATE文について

    SQL勉強中です。下記の様なデータを書き換えたいのですが、どの様なSQL文になるのでしょうか? ご教授下さいませ。 1つのテーブルに「会員NO」と「会員種別」という列がありまして、 会員氏名   会員No   会員種別 ・・・ --------------------------------- 田中一郎 1-0001 0001    ・・・ 鈴木二郎 2-0003 0001    ・・・ 会員Noの左端の数値が1なら会員種別を0001、2なら0002といった 形に振り分けたいのですが、どの様なSQL文になるのでしょうか? 自力ではなんとも上手くいきませんでした。 どうか、お助け下さいませ。

  • SQL文で表すには

    以下の表を用いてSQL文を作成しようと思ってるんですが、途中までしか思いつかないので、どなたかご教授のほうよろしくお願いします。 shohin shiire 商品番号 商品名 単価   仕入番号 仕入先名  0001 みかん 100     001  A 0002 りんご 200     002 B 0003 ぶどう 300     003   C tran 購入番号 商品番号 仕入番号 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 null 0004 20 これを以下のように出力するためにはどのようなSQL文を書けばよいですか? 商品番号 商品名 仕入番号 仕入先名 数量 単価 金額  0001 みかん 001    A   5 100 500  0001 みかん 002    B   7 100 700  0001 みかん 003    C   3 100 300  0002 りんご 001    A   7 200 1400  0002 りんご 002    B   8 200 1600  0002 りんご 003    C   6 200 1200  0003 ぶどう 001    A   10 300 3000  0003 ぶどう 003    B   9 300 2700  0004 null 004   null   20 null null ここまでは正しいと思うのですが・・・ select shohin.商品番号, shohin.商品名, shiire.仕入番号,     tran.数量, shohin.単価, tran.数量 * shohin.単価 as 金額 よろしくお願いします。

  • SQL文ので平均を出したいのですが…

    MySQLというかSQL文の質問です。基本的なことですいません。 下のようなデータがあるとき、1つの会社で働いてる人数の平均ってどうやって出すのでしょうか? COUNT関数からAVG関数につなげる方法を考えたのですがうまくいきません。どなかた分かりましたらお願いします。 名前 |会社 --------------------- 伊藤 |A会 斉藤 |B社 鈴木 |C社 本田 |B社 山田 |C社 田中 |D社 佐藤 |D社 高橋 |C社 渡邉 |A会 中沢 |B社

  • SQLの質問です。

    以下のようなテーブルで、レベルが4以下で点数が入力されているMAXの行を取得したいです。 よろしくお願いいたします。 職員番号 氏名 レベル 点数 01000 山田 花子 4 01000 山田 花子 3 40 01000 山田 花子 2 30 01000 山田 花子 1 20 01100 田中 あああ 4 10 01100 田中 あああ 3 20 01100 田中 あああ 2 30 01100 田中 あああ 1 40 01200 佐藤 あああ 4 01200 佐藤 あああ 3 01200 佐藤 あああ 2 30 01200 佐藤 あああ 1 40 この場合、取得したいのは 職員番号01000の人は点数40の行、01100の人は点数10の行、01200の人は点数30の行の 合計3行です。

  • なるべくSQL文の実行回数を少なくするには?

    次のような2つのテーブルを考えます。 登録したメンバーの行動(何時にどこにいたか)を記録するものとお考えください。 テーブル:メンバー 番号,名前 1111,田中 2222,鈴木 3333,山田 テーブル:行動 番号,メンバー,場所,時間 0,1111,A社,12:00 1,1111,B社,13:00 2,1111,C社,14:00 3,2222,D社,11:30 4,2222,E社,12:00 5,2222,F社,15:00 6,3333,G社,12:30 7,3333,H社,13:30 8,3333,I社,14:30 行動テーブルの「メンバー」はメンバーテーブルの「番号」と関連付けられています。 さて、ここで田中さん、鈴木さん、山田さんの、最後に記録されたレコードを知りたいとします。 (例で言うと行動テーブルの2,5,8番を取り出すということです) なるべくSQL文の実行を少なくするにはどうしたらいいでしょうか。 自分なりに考えたのですが、三人分繰り返すしか思いつきませんでした。。。

  • SQLの質問です。

    下記のようなテーブルで、 レベル4以下で点数が入力されているMAXの行を持ってくるにはどうしたらよいでしょうか?よろしくお願いいたします。 職員番号 氏名 レベル 点数 01000 山田 花子 4 01000 山田 花子 3 40 01000 山田 花子 2 30 01000 山田 花子 1 20 01100 田中 あああ 4 10 01100 田中 あああ 3 20 01100 田中 あああ 2 30 01100 田中 あああ 1 40 01200 佐藤 あああ 4 01200 佐藤 あああ 3 01200 佐藤 あああ 2 30 01200 佐藤 あああ 1 40 この場合欲しい結果は 職員番号01000の人は点数40点の行、01100の人は点数10点の行、01200の人は点数30点の行  3行を表示したいです。