phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Zapytanie SQL do zastąpienia ciągu w oparciu o symbol wieloznaczny

W MySQL w wersji 8.0 i nowszych możesz użyć REGEX_REPLACE() funkcjonować. W brak to samo , można wykonać kilka skomplikowanych operacji na ciągach. Jest to oparte na Twoim potwierdzenie , że wspomniany podciąg występuje tylko raz w wartości.

REPLACE() nie obsługuje symboli wieloznacznych, wzorców, wyrażeń regularnych itp. Zastępuje tylko dany stały podciąg z innym stałym podciąg, w większym ciągu.

Zamiast tego możemy spróbować wyodrębnić fragmenty post_content . Wyodrębnimy wiodący podciąg przed '

Substring_Index() funkcjonować. Podobnie, wyodrębnimy końcowy podciąg po '">

' część.

Teraz możemy po prostu Concat() te części, aby uzyskać wymagany post_content . Szczegółowe informacje o różnych funkcjach napisów można znaleźć tutaj:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

Dodałem również GDZIE warunek, abyśmy wybrali tylko te wiersze, które pasują do naszych kryteriów podciągu.

UPDATE wp_posts 
SET post_content = 
CONCAT( 
       SUBSTRING_INDEX(post_content, 
                       '<p><span id="more-', 
                       1), 
       SUBSTRING(post_content, 
                 LOCATE('"></span></p>', 
                        post_content, 
                        LOCATE('<p><span id="more-',
                               post_content)
                        ) + 13) -- 13 is character length of "></span></p>
      )
WHERE post_content LIKE '%<p><span id="more-%"></span></p>%';

Zapytanie nr 1:Dane przed operacjami aktualizacji

SELECT * FROM wp_posts;

| post_content                                            |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas  |

Zapytanie nr 2:Dane po operacjach aktualizacji

SELECT * FROM wp_posts;

| post_content         |
| -------------------- |
| adasdaadsa121324124  |
| 1412123123adasdaafas |

Wyświetl na DB Fiddle




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Nie znaleziono klasy phpMyAdmin „PMA_Message” w /usr/share/phpMyAdmin/libraries/Error.class.php

  2. Ograniczenie złożonego klucza obcego przez PhpMyAdmin?

  3. Nie można zalogować się do phpMyAdmin, nie wyświetlają się żadne błędy

  4. jak mogę zaszyfrować całą kolumnę?

  5. Nie można uruchomić phpMyAdmina. Otrzymuj błąd gniazda #2002