• ベストアンサー

一つのSQLで実行する方法

SQL初心者です。以下のような商品テーブルの備考欄の文字列をアップデートするSQLですが、ひとつのSQL文で実行させるにはどのように記述すれば良いかお教えいただけませんでしょうか? UPDATE 商品テーブル SET 備考フィールド = replace(備考フィールド,'%明太子味',''); UPDATE 商品テーブル SET 備考フィールド = replace(備考フィールド,'のり味',''); UPDATE 商品テーブル SET 備考フィールド = replace(備考フィールド,'みそ味','');

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

  • ベストアンサー
  • uresiiwa
  • ベストアンサー率45% (49/107)
回答No.1

これでいいのでは? UPDATE 商品テーブル SET 備考フィールド = replace(replace(replace(備考フィールド,'%明太子味',''), 'のり味','')'のり味','');

azuaz_001
質問者

お礼

ばっちりできました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字列に対してPHP上で一括置き換えしたい

    DBにあるテーブルの指定されたカラム全てを文字列に対してPHP上で一括置き換えしたいです。 phpアドミン上でSQL文を使って UPDATE `テーブル名` SET フィールド名A=REPLACE (フィールド名A,"置換前の文字列","置換後の文字列"); で実行したらうまくいくのですが、 これをPHP上で処理したいと考えてます。 require("godb.php");//DBにアクセス $sql ="UPDATE テーブル名 SET フィールド名 = REPLACE(フィールド名,"AAA","BBB")"; mysql_query($sql2); と実行してもうまくいきません。。。 これって、、、一個一個対象カラムをPHP上で取り出してから 処理をかけないといけないのでしょうか。。 アドバイスいただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • アクセス VBA クエリSQL文変更

    以前、教えていただいたにもかかわらず、作業が上手くいったことで、理解を深めることを疎かに してしまい、一部を修正したところ、わからなくなってしまいました。 申し訳ございませんが、教えてください。 Xと同一の構成である X1~という複数のテーブルから一つを選択して、クエリYを実行 クエリYは、フィールド1の値が BBBであるレコードの、フィールド1、3、5を抽出 Dim dbs As DAO.Database Dim qrdef As DAO.QueryDef Set dbs = Currentdb Set qrdef = dbs.QueryDefs("クエリY") qrdef.SQL = Replace(Expression:=qrdef.SQL _         , Find:="テーブルX" _         , Replace:="テーブルX1" _         , Compare:=vbTextCompare) Set qrdef = Nothing Set dbs = Nothing 実行時エラー3075  クエリ式'テーブルX1.フィールド1'の構文エラー:演算子がありません デバッグ qrdef.SQL = Replace(Expression:=qrdef.SQL _         , Find:="テーブルX" _         , Replace:="テーブルX1" _         , Compare:=vbTextCompare) 元となるクエリを直接実行すると正しく動作します。

  • sqlで文字列を最後に追加したい

    SqlServer2000でクライアントはクエリアナライザを使っています。 例えばAccessのVBAでは adoRS!備考 = adoRS!備考.value & "追加する文字列" とすれば備考フィールドの最後に文字列を追加できますが、 これをsqlで行う場合にはどうればいいですか? update tblアンケート set 備考 = 備考 & '追加する文字列' としても「データ型の演算子が無効です。データ型演算子は boolean AND、データ型は varchar です。」エラーになってしまいます。 エラーの意味もわからず検索もしたのですが解決できませんでした。 宜しくお願い致します。

  • sql: update またはinsert を判断して1回で実行するには

    わかりやすいように単純にしていますが table1に ID と titleフィールドがあるとして、 update table1 set title = 'no1' where ID = '1' と insert into table1 (ID,title) values ('1','no1') これを一個にまとめたいのですが、 一回のSQLで 指定したIDが なければ、挿入、存在すれば、アップデート みたいな処理は可能でしょうか? CASEとかEXISTS とかの組み合わせでできますでしょうか? 最近まで、SQLを利用したデータベースほとんど 利用していなかったので 初歩的なことで申し訳わけありませんが インターネットの解説サイトをみてもわからないので SQLの本を購入しましたが届くのが来週以降なので もし できるのでしたら、 使う関数名だけでもいいので教えてください。

  • SQL詳しい方、助けてください。

    こんにちは。 UPDATE テーブルA SET フィールドA1 = '1' WHERE フィールドA2 =(SELECT フィールドB1 FROM テーブルB WHERE フィールドB2 = 'C0' OR フィールドB2 = 'C2' AND フィールドB3='') AND フィールドA3 = '' AND フィールドA4 <> '' というSQLを作成して、動作していたので安心していたら、 テーブルBのレコード数は1件のみだと思っていたら、複数存在する場合があるとのことで、 テーブルBのレコードを追加してみたところ、、 【サブクエリは複数の値を返しました。サブクエリが = 、!= 、<、<= 、>、>= のあとに続く場合や、 サブクエリが 1 つの式として使われる場合に複数の値は許可されません。】 というエラーで終了するようになってしまいました。 そこで、 UPDATE テーブルA AS A INNER JOIN テーブルB AS B ON A.フィールドA2 = B.フィールドB1 SET A.フィールドA1 ='1' WHERE B.フィールドB2 = 'C0' OR B.フィールドB2 = 'C2' AND B.フィールドB3='' AND A.フィールドA3='' AND A.フィールドA4 <> '' としてみました。 なんだか混乱してきて、結合条件があっているかが 自分でもよくわかんなくなっていますが。 しかも、 上記のSQLをSQL SERVER 2000のクエリアナライザで 実行すると、 【キーワード 'inner' 付近に正しくない構文があります。】 というエラーが・・・。 INNER 以下はいろいろおかしいんだろうな・・・と 思っていたのですが、まさか、そんなしょっぱなで引っかかるとは思いませんでした。 いろいろ、記述方法を変更してみたり、考えたんり したんですけど、情けないことにさっぱり解りません。 どなたかお力をお貸しください。 お願いします。

  • ヒアドキュメントでSQLを書く事について

    ヒアドキュメントを使ってSQLクエリを書くのは良くないという話を聞いたのですが、どのようなデメリットがあるのでしょうか? あと、購入した書籍に INSERT INTO テーブル名 SET フィールド名=入力値 というSQLが書いてあったのですが、 INSERT INTO テーブル名 (フィールド名) VALUES(入力値) とどちらが一般的な記述方法なのでしょうか? それぞれにメリット・デメリットなどありましたら教えて下さい。 PHPを始めて間もないため不安が多く質問ばかりですみません。

    • ベストアンサー
    • PHP
  • SQLの書き方

    以下の条件を取得したいのですがどのようなSQLを組めばいいか悩んでます。 テーブルA(列はC1,C2,C3,C4 PKはC1,C2です。) ■テーブルAのデータ C1  C2   C3   C4 1   1   50   備考1です。 1   2   75   備考2です。 2   1   25   備考3です。 3   1   75   備考4です。 3   2   90   備考5です。 3   3   50   備考6です。 ■取得したい結果 C1  C2   C3   C4 1   2   75   備考2です。 2   1   25   備考3です。 3   2   90   備考5です。 ■取得したい条件 C1でグルーピングしたなかでC3の値が一番大きな行を取得する。 現在は以下のようなSQLを書いています。 SELCT T1.* FROM テーブルA T1, (SELECT C1,MAX(C3) AS C3MAX FROM テーブルA GROUP BY C1) T2 WHERE T1.C1 = T2.C1 AND T1.C3 = T2.C3MAX もう少し簡単なSQLで出来そうですが、うまく思いつきません。 宜しくお願いします。

  • SQLの同時実行

    SQL文について質問なんですが、下記のようなテーブルがあった場合に『2を3に、3を2にする』というクエリを作ってみましたが、どうもうまくいきません。 ┌─┬──┐ │No│項目│ ├-┼──┤ │1│ああ│ ├─┼──┤ │2│いい│ ├─┼──┤ │3│うう│ └─┴──┘ strSQL1=UPDATE テーブル名 SET No = '2' WHERE No = '3' strSQL2=UPDATE テーブル名 SET No = '3' WHERE No = '2' これをASPから実行する場合は cn.Execute(strSQL1) cn.Execute(strSQL2) とすると、先にstrSQL1が実行されテーブルが更新された後にstrSQL2が実行される ため、 ┌─┬──┐ │No│項目│ ├─┼──┤ │1│ああ│ ├─┼──┤ │3│いい│ ├─┼──┤ │3│うう│ └─┴──┘ となってしまいます。『2つの更新を同時に実行させる』もしくは『2つの更新クエリ1つにする』というようなことはできないものでしょうか?

  • SQLでの変数の扱いについて

    VBを利用してのSQL文に変数を使いたいのですが記述方法が良くわかりません。 まず dim a as string dim b as integer dim c as integer a="AAAA" b=10 c=23500 として テーブルZの項目1が nvarchar 項目2が tinyint 項目3がrealであった場合 sql文の記述方法をWebで探していると 文字列変数ならシングルクォーテーションでくくって代入 数値変数ならダイレクトに代入というようにとれるところがあったので下記の 様に記述すると更新されません sqlstr=("UPDATE テーブルZ set 項目1='a',項目2=b,項目3=c where 項目=1") 下記のように分割してそれぞれひとつづつのテストすると更新できます sqlstr=("UPDATE テーブルZ set 項目1=" & a & " where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & b & "' where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & c & "' where 項目=1") 上記の要領で1つにまとめると出来ないので,どのように書けばよいのでしょうか よろしくお願い致します

  • SQLの書き方について教えてください。

    SQL Server2000で下記のようなSQL文を書きたいと思っています。 テーブルAとテーブルAに無関係な2個のフィールドを 持つテーブルBがあり、テーブルAのデータをテーブルBにコピー したいと考えています。その際にテーブルBの2個のフィールドに対して 決められた値を挿入したいのですがどのように記述すればよいのか わかりません。 お分かりの方お教えいただけませんでしょうか よろしくお願いいたします。 下記の記述をしています。 INSERT INTO テーブルB ( A, B, C, D ) SELECT テーブルA.A, テーブルA.A, XXX1, XXX2 FROM reserveSETdateTRN; Cに東京 Dに品川 を入れたいと思っています