Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:търсене/замяна, но само първия път, когато дадена стойност се появи в записа

Това всъщност трябва да е това, което искате в 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));

Малко по-сложен е от предишния ми отговор - трябва да намерите първия екземпляр на 'A' (използвайки функцията INSTR), след това използвайте LEFT в комбинация със REPLACE, за да замените само този екземпляр, отколкото да използвате SUBSTRING и INSTR, за да намерите същото 'A' го заменяте и го СВЪРЧАТЕ с предишния низ.

Вижте моя тест по-долу:

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;

Произвежда:

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. Как да намерите нечислови стойности в колона в MySQL

  2. Използване на виртуални полета в cakePHP 2.x

  3. Mysql:Преобразувайте DB от местно време в UTC

  4. Извличане на подниз на MySQL с помощта на разделител

  5. Параметри на свързване за клауза WHERE IN със ЗНП