Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL:wyszukaj/zamień, ale tylko za pierwszym razem, gdy wartość pojawia się w rekordzie

To powinno być to, czego chcesz w MySQL:

UPDATE wp_post
SET post_content = CONCAT(REPLACE(LEFT(post_content, INSTR(post_content, 'A')), 'A', 'B'), SUBSTRING(post_content, INSTR(post_content, 'A') + 1));

Jest to nieco bardziej skomplikowane niż moja wcześniejsza odpowiedź - Musisz znaleźć pierwsze wystąpienie „A” (używając funkcji INSTR), a następnie użyć LEFT w połączeniu z REPLACE, aby zastąpić tylko to wystąpienie, niż użyć SUBSTRING i INSTR, aby znaleźć to samo 'A', który zastępujesz i CONCAT go z poprzednim ciągiem.

Zobacz mój test poniżej:

SET @string = 'this is A string with A replace and An Answer';
SELECT @string as actual_string
, CONCAT(REPLACE(LEFT(@string, INSTR(@string, 'A')), 'A', 'B'), SUBSTRING(@string, INSTR(@string, 'A') + 1)) as new_string;

Produkuje:

actual_string                                  new_string
---------------------------------------------  ---------------------------------------------
this is A string with A replace and An Answer  this is B string with A replace and An Answer


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zwrócić pozycję pozycji listy w MySQL?

  2. Odpowiednik PDO mysql_num_rows lub mssql_num_rows

  3. Zresetuj hasło roota MySQL za pomocą instrukcji ALTER USER po instalacji na Macu

  4. MAX() – Znajdź maksymalną wartość w kolumnie w MySQL

  5. SQL - Jak znaleźć najwyższą liczbę w kolumnie?