SQLで条件に合うデータの前後に文字をスマート付加

このQ&Aのポイント
  • Membersテーブルのnameがstatus 200のレコードの前後に文字を付加する方法をSQLで実現したいです。
  • Membersテーブルのnameがstatus 200のレコードの前後に「ABC」と「XYZ」を付加する操作をSQLでスマートに行いたいです。
  • 質問者はSQLの詳しい知識がないため、SQLコマンドの柔軟性についても質問しています。また、対象のファイルはmdbで、スクリプトはまだ作成されていないとのことです。
回答を見る
  • ベストアンサー

SQLで条件に合うデータの前後に文字をスマート付加

こんにちは データベース(mdbファイル)で、次のような置き換えをしたいのですが、スマートなやり方をご存じでしたら教えてください。 Membersテーブル id, name, status 1, 田中, 200 2, 鈴木, 300 3, 高橋, 200 4, 中村, 400 Membersテーブルのうち、status が 200 のレコードになっている name の前後に「ABC」と「XYZ」を付加する、という操作です。 置き換え作業後は次のようになります。 Membersテーブル id, name, status 1, ABC田中XYZ, 200 2, 鈴木, 300 3, ABC高橋XYZ, 200 4, 中村, 400 Where status = 200 と指定して、帰ってきたレコードをループさせて、1件ずつUpdateすればできるのですが、そもそもSQLコマンドの時点でスマートにできるのではないかと思い質問した次第です。SQLは詳しくないのですが、意外に柔軟でスマートなことができるようですので。。。 対象のファイルはmdbで、スクリプトはまだ作っていませんが、vbsになるのではないかと思っています。 Windows 7 and 8 64bit MS Accessはありません

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

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

下記のSQLを実行すればOKです。 update Members set name = 'ABC' & name & 'XYZ' where status = 200

tuktukrace
質問者

お礼

ありがとうございます!" できました。 やっぱりこんな簡単な記述でできるんですね!素晴らしいです! 無駄なコードを書かずにすみました。

その他の回答 (1)

  • kawais070
  • ベストアンサー率52% (2242/4282)
回答No.2

select id, iif(status=200,'ABC'+name+'XYZ',name), status from Members って感じ?試してないけど。

関連するQ&A

  • SQLで条件指定結合をしたいがNULLも表示したい

    こんにちは、ちょっと複雑なSQLの結合で困っています。 次のような名簿テーブルがあります。 ID, Name, IsMarried 1, 田中, True 2, 鈴木, True 3, 高橋, False 4, 中村, True 「IsMarried」は結婚しているかどうかを示しています。 そして、次のような属性テーブルがあります。 ID, ParentID, Type, Value 1, 1, 1, 55kg 2, 1, 2, 170cm 3, 1, 3, AB型 4, 2, 1, 52kg 5, 2, 2, 165cm 6, 3, 3, B型 7, 4, 1, 45kg 8, 4, 2, 180cm ParentIDは、名簿テーブルのIDに対応しています。 Typeは、1が体重、2が身長、3が血液型です。 Valueに実際の値が入っています。 ここで、「既婚者」を全員抽出して、"登録されている場合は"その血液型を表示するSQLを書きたいのですが、うまく行きません。どうしたらよいでしょうか? 結果は次のようになります。 ID, Name, BllodType 1, 田中, AB型 2, 鈴木, null 4, 中村, null Select 名簿.ID, 名簿.Name, 属性.Value from 名簿 [Inner/Left] Join 属性 on 名簿.ID = 属性.ParentID Where 名簿.IsMarried = True AND 属性.Type = 3 このようにすると、血液型が登録されている田中さんしか表示されません。 条件指定を外すと体重や身長も表示されます。 ExcelのVBAからADODBでAccessのmdbファイルにアクセスしています。 Windows 7 64bit、Office 2007です。

  • なるべく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文の実行を少なくするにはどうしたらいいでしょうか。 自分なりに考えたのですが、三人分繰り返すしか思いつきませんでした。。。

  • サブクエリなしで2つのテーブルを集計する方法

    テーブルA id|cnt|name 1 2 田中さん 2 5 鈴木さん テーブルB id|cnt|name 1 4 田中さん 2 4 鈴木さん サブクエリを使用せず、上記2つのテーブルを集計し、 下記のように出力できるSQLはありますでしょうか? ■期待する総合ランキング結果 id|cnt|name 2 9 鈴木さん 1 4 田中さん P.S まだまだ、安価なレンタルサーバはMySQLは4.0が多く苦労します・・

    • ベストアンサー
    • MySQL
  • SQL文 テーブルの作成方法について

    以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。

  • SQL ORDER BY の結果について

    SQLのORDER BYの結果表示がおかしく困っています。 テーブル名:社員名簿 プライマリーキー無し (設定厳禁) フィールド: | 社員ID | 氏名 | 住所 | | VARCHER|VARCHER|VARCHER| | P1 | 田中 |東京都 | | P2 | 鈴木 |東京都 | | P10 | 高橋 |千葉県 | SQL文: SELECT * FORM 社員名簿 ORDER BY 社員ID 出力結果: | 社員ID | 氏名 | 住所 | | P1 | 田中 |東京都| | P10 | 高橋 |千葉県| | P2 | 鈴木 |東京都| 上記のような出力結果となってしまいます。 何か良い方法はありませんか? よろしくお願いします

  • SQLがわからないので教えて下さい。

    SQLがわからないので教えて下さい。 素人な質問なのかもしれませんが、お願いします。 次のような2つのテーブルがあるとします。 テーブルA ID,name -------- 1,name1 2,name2 3,name3 4,name4 5,name5 テーブルB ID,hoge1,hoge2,hoge3 --------------------- 2, hoge, hoge, hoge 3, hoge, hoge, hoge テーブルAのとテーブルBのIDを見て、テーブルBのID に無いテーブルAのIDを取り出す方法が知りたいです。 質問がわかりにくいかもしれないので上の例でいえば、テーブルAのIDが1~5でテーブルBの方にがありますので、取り出したいIDは、1、4、5です。 どうかご教授ください。 よろしくお願いします。

  • 外部結合で参照列が複数あるSQL

    テーブルA ID 依頼者  代理者 1 0001    0002 2 0001   0005 3 0004   0003 テーブルB 従業員ID 名前 0001   佐藤 0002   中村 0003   林 0004   高橋 0005   田中 このとき、テーブルAを素にして外部結合して 依頼者番号の欄には名前を入れるSQLを作りたいと思います。 外部結合をSQLで SELECT 依頼者,代理者 FROM テーブルA LEFT JOIN テーブルB ON テーブルA.依頼者 = テーブルB.従業員ID と行い、『依頼者』については、テーブルBから名前を引っ張ってこれたのですが、『代理者』列についても、テーブルBから名前を引っ張ってこれるようにしたいと思います。 色々試しましたが、分かりません。 お知恵をお貸しいただけると、嬉しいです。 どうぞ、よろしくお願いします。

    • 締切済み
    • PHP
  • SQL SELECT文の書き方

    お世話になります。 下記ような3個のテーブルから、下記画面表示内容のようにするには、 どのようなSQLを書けばよろしいでしょうか ご教示願います。 所有者テーブル 所有者ID,所有者名 1,田中 2,鈴木 3,前田 土地テーブル 所有者ID,取得日,面積 1,11/22,100 1,11/24,30 1,11/26,150 2,4/2,45 2,12/4,120 家屋テーブル 所有者ID,取得日,延床面積 1,11/25,30 1,11/30,12 画面表示内容 所有者ID,名前,土地取得日,面積,家屋取得日,延床面積 1,田中,11/26,150,11/30,12 1,田中,11/24,30,11/25,30 1,田中,11/22,100,空白,空白 2,鈴木,12/4,120,空白,空白 2,鈴木,4/2,45,空白,空白 3,前田,空白,空白,空白,空白 よろしくお願いします。

  • SQL GROUPで件数の一番多いレコードのみ取る

    SQL GROUPで件数の一番多いレコードのみ取る ORACLE10です。 次のようなテーブルがあります。 USER -----------テーブル名 ID,NAME,DATA----列名 1,A,any 1,A,any 1,B,any 2,C,any 3,D,any このテーブルから、IDをGROUPにして、さらに、一番使用頻度の多いNAMEを取得したいのです。 表示したいのは、IDとNAMEです。 つまり、取得結果例は次のようになります。 取得結果例 ID,NAME----列名 1,A 2,C 3,D SQL文をどのように作れば可能でしょうか? ちなみに、IDやNAMEのマスタテーブルはありません。 自分では、「(select ID, NAME, count(*) from USER group by ID, NAME) COUNT」で、COUNTを内部テーブルにして、グループ内で一番多いcount(*)をmaxで取得してみようかと思ったんですが、そこからアイデアが出ませんでした。

  • 検索の仕方

    下記の場合の検索する方法を教えてください。 テーブル:abc id : キー xyz_id : xyzのキーが入る テーブル:xyz xyz_id : キー xyz_name : 適当な文字 テーブルabcに登録されていないテーブルxyzのxyz_idだけをSELECT文で抜き出したいのです。 大変、くだらない質問で恐縮ですが、よろしくお願いいたします。