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

Jak mogę używać mySQL replace() do zastępowania ciągów w wielu rekordach?

Na bardzo ogólnym poziomie

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

WHERE SomeOtherColumn LIKE '%PATTERN%'

W twoim przypadku mówisz, że zostały one zmienione, ale ponieważ nie określasz, w jaki sposób zostały zmienione, załóżmy, że zostały zmienione do GREATERTHAN

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

WHERE articleItem LIKE '%GREATERTHAN%'

Ponieważ Twoje zapytanie będzie faktycznie działać wewnątrz ciągu, Twoje WHERE Klauzula dopasowująca do wzorca raczej nie poprawi wydajności — w rzeczywistości wygeneruje to więcej pracy dla serwera. O ile nie masz innego elementu klauzuli WHERE, który poprawi działanie tego zapytania, możesz po prostu wykonać aktualizację w następujący sposób:

UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

Możesz także zagnieździć wiele REPLACE połączenia

UPDATE MyTable
SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')

Możesz to również zrobić podczas wybierania danych (w przeciwieństwie do ich zapisywania).

Więc zamiast :

SELECT MyURLString From MyTable

Możesz zrobić

SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable



  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 przejść przez zbiór wyników mysql?

  2. Zmień kolejność / zresetuj klucz główny automatycznego przyrostu

  3. Czy mogę stworzyć widok z parametrem w MySQL?

  4. Wiele zapytań PDO

  5. Pole liczb całkowitych MySQL jest zwracane jako ciąg znaków w PHP