• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UPDATE文のsetに複数処理)

Access2002のSQLでUPDATE文のsetに複数処理する方法

このQ&Aのポイント
  • Access2002のSQLでUPDATE文のsetに複数処理を統合する方法について教えてください。
  • この質問は、Accessのデータベースで、[A表]というテーブルの[F1]というフィールドに対して、2つの処理を統合する方法についてです。
  • この処理を統合することで、1つのクエリで実行することができるかどうか、また可能であればその方法を教えてください。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

可能ですが、先頭32文字と末尾20文字を切り捨てるからには、 元のデータは必ず52文字以上あるんですかね? UPDATE [A表] SET [A表].F1 = iif( len([F1]) > 52, mid([F1], 33, len([F1]) - 32 - 20), ''); F1列が52字を越えていれば途中を切り出し、52文字以下なら空文字をセットします。 ELSE部分は適宜変更してください。

kamonegi21
質問者

お礼

ありがとうございます。頂いたSQLで問題なく変換可能でした。 実際はF1にはURL文字列を含むPHPの配列文字列が入りますので、 $hensuuA[0] = "<a href=\"http://yahoo.co.jp\" target=\"_blank\" $hensuuA[1] = "<a href=\"http://google.co.jp\" target=\"_blank\" $hensuuA[2] = "<a href=\"http://rakuten.co.jp\" target=\"_blank\" という文字列がはいっています。この文字列からURL部分だけを抜き出したかったので アタマ32文字、お尻20文字を切り捨てる必要がありました。 助かりました、ありがとうございました!

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

その他の回答 (2)

回答No.2

> 早速実行してみましたところ、「パラメータの入力」なるダイヤログが出現し、 > A表.F1に行う処理の入力をもとめられました。どうやらそのままでは難しいようです。 サンプルを作成して試してみましたが、前回提示したSQLで問題なく実行されましたよ。 パラメータがでるということは、フィールド名が実際のものと違っていることですので、正しいかどうか確認してみてください。 > やりたい事はおっしゃるとおりで、フィールド上のデータのアタマ32文字と > ケツ20文字を消してしまいたいというところです。 質問の、 UPDATE [A表] SET [A表].F1 = Mid([F1],32); は、32文字目以降を取り出す、つまり、あたま31文字を削除するという動作になりますので、 それに合わせて回答しました。

kamonegi21
質問者

お礼

こちらのSQLでも実行可能でした。ありがとうございました!

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

前から 31文字目までと後ろから20文字目までを削除したいということでしょうか。 UPDATE [A表] SET [A表].F1 = Mid([F1],31+1,Len([F1])-31-20); でどうでしょうか。

kamonegi21
質問者

補足

ご回答ありがとうございます。 早速実行してみましたところ、「パラメータの入力」なるダイヤログが出現し、 A表.F1に行う処理の入力をもとめられました。どうやらそのままでは難しいようです。 ちなみにaccess2002環境です。 やりたい事はおっしゃるとおりで、フィールド上のデータのアタマ32文字と ケツ20文字を消してしまいたいというところです。

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

関連するQ&A

  • CGIとMysqlで複数のupdate文を実行したい

    CGI(Perl5.8*)のDBIモジュールでのMysqlの質問です。 //////////////////////////////////////////// $sql = " update `postageFee` set `aaa`=1,`bbb`=2 where `id`=1; update `postageFee` set `aaa`=3,`bbb`=4 where `id`=5; "; $result = $db->prepare("$sql"); $result->execute; $result->finish; //////////////////////////////////////////// 上記のように複数行にわたるupdate文を一回のQueryで処理させたいのです。 上記のような方法で一回で処理はできないのでしょうか?どうしてもうまくいきません。 1行1行クエリーしないといけないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • 1テーブル&複数レコードの更新に対して1度のupdate文での処理方法

    1テーブル&複数レコードの更新に対して1度のupdate文での処理方法 Delphi2010+SQL SERVER 2005で開発しています。 update文で、 現在下のようにwhileで複数レコードに対して、 1回、1回、sqlを発行して、更新しています。 これを、一度のSQLの発行で処理できないものでしょうか? 更新テーブルは1つで、更新する項目も同じです。 更新するデータと、where句の条件が異なります。 もし可能なようでしたら、どうかご教授お願いします。 update table set A=1,B=2 where id=1 update table set A=2,B=3 where id=5 update table set A=9,B=99 where id=7 update table set A=5,B=10 where id=15 update table set A=1,B=10 where id=75

  • 条件付きの複数の列の更新を1度にすることは可能?

    MySQLバージョン4.1.16を使っています。 aという列はaが0より大きいときだけ-1したくて でもbはいかなる条件のときでも0にしたい、という場合に それを1つのSQL文で実行することは可能なのでしょうか? 例えば、 query("UPDATE table SET a = a - '1' WHERE a > '0';"); query("UPDATE table SET b = '0';"); を1つのSQL文で実行したいのです。

    • ベストアンサー
    • MySQL
  • 処理速度について(UPDATE)

    下記の2つのSQL句があります。 どのSQLが処理速度が速いのでしょうか。 また、一般的なのはどのSQLなのでしょうか。 処理1 UPDATE テーブルA SET 項目A = '0' WHERE NVL(項目A,'0') = '0'; 処理2 UPDATE テーブルA SET 項目A = '0' WHERE 項目A IS NULL; 私としては、処理2の方が早いような気がするのですが・・・ 教えてください。お願いします。

  • UPDATE文について

    昨日こちらで自分の間違ったSQL文をご指摘頂き 時間計算の処理は実装する事が出来たのですが その後の計算処理が終わった後、計算結果をDBに格納する処理で 再度躓いてしまったので、再度のご教授お願いします。 $sql = "SELECT SUM(ROUND(労働時間/100, 0)) + ROUND(SUM(MOD(労働時間,100)) / 60, 2) AS total     FROM 労働時間テーブル WHERE id = 'ログインしている人のID';"; $total_Time = pg_query($con, $sql); $total_Time = pg_fetch_result($total_Time, 0, 'total'); // 確認のため、表示 echo $total_Time; で値はきちんと表示されおります。 しかし、この後UPDATE文で $sql = "UPDATE 労働時間テーブル SET 総労働時間 = '$total_Time' WHERE id = 'ログインしている人のID';"; pg_query($con, $sql); と打ち試しましたが、echoの時に表示された値がDBに格納されません。(>_<) 試しに $sql = "UPDATE 労働時間テーブル SET 総労働時間 = '$total_Time' WHERE id = 'ログインしている人のID';"; の'$total_Time'をSELECT文に変更したりもしましたが、echoの時に 表示されていた値とは違う値がDBに格納されるようになってしまいました。 どのように解決したらよいか、悩んでおります。 そもそもの考え方から間違っているのでしょうか? ご教授の程、よろしくお願い致します。

  • 更新クエリ 複数の抽出条件の書き方

    いつもアドバイスありがとうございます。 表題の通り、下記コード(一部)で更新クエリをかけてますが、 抽出条件として、「FileNameと区分が空白の場合」という抽出条件を付け加えたいです。 色々調べてみたのですが、 UPDATE句の続きに、「& "where File Name = "" & 区分 = "" "」 をつけたのですが、これをつけると何も更新されなくなってしまいます。 何かアドバイスがあればお願いします。 Name1 = TName & ".csv" Name2 = Left(TName, Len(TName) - 5) ret = MsgBox(Name1 & "をFileName ・ " & Name2 & "を区分に追加しますか?", vbYesNo + vbQuestion, "インポート確認") Dim sql1 As String sql1 = "Update T_Mas SET FileName = '" & Name1 & "',区分 = '" & Name2 & "'" DoCmd.RunSQL sql1

  • UPDATE文でこのような更新はできますか?

    (TBL_A) A1  A2 ----------- 1  100 2  200 3  300 4  400 5  500 (TBL_B) B1  B2 ----------- 1  100 3  300 4  400 上記のようなテーブルAとBがあったとして 次のようなUPDATE文を実行することはできますか? できない場合、SQL1発で更新する他の方法はありますでしょうか? UPDATE TBL_A A SET A.A1 = A.A1 + B.B1 A.A2 = A.A2 + B.B2 WHERE EXISTS (SELECT 'X' FROM TBL_B B WHERE A.A1=B.B1) 【更新後のTBL_A表】 A1  A2 ----------- 1  200 <= (*)更新される 2  200 3  600 <= (*)更新される 4  400 5  1000 <= (*)更新される 【やりたいこと】 TBL_A表のA2列のデータにTBL_B表のB2列のデータを加算したい。 その場合の更新条件として「A1がB1に存在している場合のみ」という条件を加えたいのです。 すいませんが、よろしくおねがいします。

  • SQLSERVER上でUPDATE文を実行するときに?

    SQLSERVERでUPDATE文を実行しようとしています。 UPDATE A SET CharName = (LEFT(B.UserName, 20)) FROM A, B WHERE A.USER_CD = B.UserID これを実行しようとしているのですが、STRING、バイナリーは切り詰められました。というエラーがでます・・・。 こういう使い方はできないのでしょうか?

  • 上手くUPDATEされない

    $sql5= 'UPDATE time SET id='.$id22.' , name="'.$name22.'", ji='.$ji2.' , kou='.$kou2.' , tan="'.$tan2.'" , nyu="'.$nyu2.'" WHERE id={$_GET["id"]}'; $res5 = mysql_query($sql5); 何がおかしいでしょうか・

    • ベストアンサー
    • PHP
  • UPDATE文のWHERE句について

    if(!is_null($_GET['sid'])) $sid = (int)$_GET['sid']; $sql = "UPDATE ideamemo_table SET update_date = '$update' WHERE sid = $sid;"; mysql_query($sql, $con) or die(mysql_error()); と書いた時に、下記のようなエラーが表示されます。 どこがどう間違っているのでしょうか。 $sidを、シングルクォーテーションでくくっても、エラーが出ます。 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE sid = ''' at line 1