0

Response 列のデータは =blahblahblahTYPE=ERRORblahblahです。次に、以下のクエリを実行して、'ERROR' 文字列だけをターゲットにします。

SELECT substr(Response, instr(Response, 'ERROR'), 5) 
  FROM table 
  WHERE id = 721451 
    AND Status = 'false' 
    AND Response LIKE '%<status>Unknown</status>%' 
    AND date >= curdate();

上記のクエリは次を返します: ERROR.

基本的に残りのデータを編集せずに更新ERRORしたい。SUCCESS

以下のクエリは機能しますか? これを行うより良い方法はありますか?

UPDATE table 
  SET Response = 'SUCCESS' 
  WHERE (
    SELECT substr(Response, instr(Response, 'ERROR'), 5) 
      FROM table 
      WHERE id = 721451 
        AND Status = 'false' 
        AND Response LIKE '%<status>Unknown</status>%' 
        AND date >= curdate()
  );

事前にご協力いただきありがとうございます。

4

1 に答える 1

1
UPDATE table 
  SET Response = REPLACE(Response, 'ERROR', 'SUCCESS')
   WHERE id = 721451 
     AND Status = 'false' 
     AND Response LIKE '%<status>Unknown</status>%' 
     AND date >= curdate();

https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replaceを参照してください

于 2015-08-15T07:04:58.687 に答える