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

Znajdź i zamień fragment tekstu w polu za pomocą MySQL

Aby zastąpić niestały ciąg, powinieneś użyć ograniczników ciągu, który chcesz zastąpić. W poniższym przykładzie ograniczniki to START i END , więc zastąp je tymi, których szukasz. Uwzględniłem obie opcje:z zastąpionymi ogranicznikami i bez nich.

Przykładowe dane przy założeniu tabeli t z kolumną col :

|                COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND |                       ab |                  abSTARTEND |
|  abcSTARTxxxxxENDd |                     abcd |                abcSTARTENDd |
|   abcdSTARTxxENDef |                   abcdef |              abcdSTARTENDef |
|  abcdeSTARTxENDfgh |                 abcdefgh |            abcdeSTARTENDfgh |
| abcdefSTARTENDghij |               abcdefghij |          abcdefSTARTENDghij |

To jest zapytanie, które tworzy poprzednie dane wyjściowe z col kolumna. Oczywiście używaj tylko tej części zapytania, której potrzebujesz (z zastąpionymi ogranicznikami lub bez nich).

SELECT col,
  INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '') with_delimiters_replaced,
  INSERT(col,
     LOCATE(@start, col) + CHAR_LENGTH(@start),
     LOCATE(@end, col) - LOCATE(@start, col) - CHAR_LENGTH(@start),
     '') without_delimiters_replaced
FROM t, (SELECT @start := 'START', @end := 'END') init

To zadziała pod warunkiem, że zarówno START i END ciągi są obecne w tekście wejściowym.

Aby faktycznie zaktualizować dane, użyj UPDATE polecenie (używając faktycznie potrzebnej wersji zapytania, w tym przypadku tej z zastąpionymi ogranicznikami):

UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '')

W konkretnym przypadku zastąp START z:

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/

i END z:

.js"></script> 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja MySQL TRUNCATE() – Obcina liczbę do określonej liczby miejsc dziesiętnych

  2. Porządkowanie wyniku MySQL ustawionego przez wartość MAX() innej tabeli

  3. Sprawdzanie, czy wynik jest pusty (PHP, PDO i MySQL)

  4. Jak przechowywać powtarzające się daty, pamiętając o czasie letnim?

  5. Obsługa opóźnień w transakcjach MySQL