sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

SQL-forespørgsel til at erstatte streng baseret på jokertegn

I MySQL version 8.0 og nyere kan du bruge kode>REGEX_REPLACE() fungere. I fravær af det samme , kan nogle komplicerede strengoperationer udføres. Dette er baseret på din bekræftelse , at den nævnte understreng kun forekommer én gang i en værdi.

REPLACE() understøtter ikke jokertegn, mønstre, regulære udtryk osv. Det erstatter kun en given fast understreng med en anden fast understreng, i en større streng.

I stedet kan vi prøve at udtrække dele af post_content . Vi vil udtrække den førende understreng før '

Substring_Index() fungere. På samme måde vil vi udtrække den efterfølgende understreng efter '">

' del.

Nu kan vi simpelthen Concat() disse dele for at få det nødvendige post_content . Du kan finde detaljer om forskellige strengfunktioner, der bruges her:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

Jeg har også tilføjet en WHERE betingelse, så vi kun vælger de rækker, der matcher vores givne understrengkriterier.

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

Forespørgsel #1:Data før opdateringshandlinger

SELECT * FROM wp_posts;

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

Forespørgsel #2:Data efter opdateringshandlinger

SELECT * FROM wp_posts;

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

Se på DB Fiddle




  1. Hvordan skriver jeg en SP i phpMyAdmin (MySQL)?

  2. For mange parameterværdier gør forespørgslen langsommere

  3. Valg af MYSQL-kolonne betinget

  4. LINQ til SQL eksekveringstiden er 50 gange længere end SSMS SQL