sql >> Databáze >  >> Database Tools >> phpMyAdmin

SQL dotaz pro nahrazení řetězce na základě zástupných znaků

V MySQL verze 8.0 a vyšší můžete použít REGEX_REPLACE() funkce. V absence totéž lze provádět některé složité operace s řetězci. Toto je založeno na vašem potvrzení , že uvedený podřetězec se v hodnotě vyskytuje pouze jednou.

REPLACE() nemá žádnou podporu pro zástupné znaky, vzory, regulární výrazy atd. Nahrazuje pouze danou pevnou podřetězec s jiným pevným podřetězec ve větším řetězci.

Místo toho se můžeme pokusit extrahovat části post_content . Extrahujeme úvodní podřetězec před '

Substring_Index() funkce. Podobně extrahujeme koncový podřetězec za '">

' část.

Nyní můžeme jednoduše Concat() tyto části, abyste získali požadovaný post_content . Podrobnosti o různých funkcích String používaných zde:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

Také jsem přidal WHERE podmínku, takže vybereme pouze ty řádky, které odpovídají našim daným kritériím podřetězce.

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>%';

Dotaz č. 1:Data před operacemi aktualizace

SELECT * FROM wp_posts;

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

Dotaz č. 2:Data po operacích aktualizace

SELECT * FROM wp_posts;

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

Zobrazit na DB Fiddle




  1. Konstantní chyba #1064 ve všem, co dělám v mySQL prostřednictvím phpMyAdmin

  2. jak importovat txt do mysql přímo nebo přes php

  3. nastavení časového pásma pro MySQL pomocí PHPMyAdmin

  4. SQL Server:Import databáze z .mdf?