sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

SQL-fråga för att ersätta sträng baserad på jokertecken

I MySQL version 8.0 och senare kan du använda code>REGEX_REPLACE() fungera. I frånvaro av samma , kan vissa komplicerade strängoperationer göras. Detta är baserat på ditt bekräftelse , att nämnda delsträng endast förekommer en gång i ett värde.

REPLACE() har inget stöd för jokertecken, mönster, reguljära uttryck etc. Det ersätter bara en given fixad delsträng med en annan fixad delsträng, i en större sträng.

Istället kan vi försöka extrahera delar av post_content . Vi extraherar den inledande delsträngen före '

Substring_Index() fungera. På liknande sätt kommer vi att extrahera den efterföljande delsträngen efter '">

" del.

Nu kan vi helt enkelt Concat() dessa delar för att få det nödvändiga post_content . Du kan hitta information om olika strängfunktioner som används här:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

Jag har också lagt till en WHERE villkor, så att vi bara väljer de rader som matchar våra givna delsträngskriterier.

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

Fråga #1:Data före uppdateringsåtgärder

SELECT * FROM wp_posts;

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

Fråga #2:Data efter uppdateringsåtgärder

SELECT * FROM wp_posts;

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

Visa på DB Fiddle




  1. Tabell finns inte efter att ha skapat en Temp-tabell

  2. Kopiera en databastabell med PhpMyAdmin

  3. Vad är skillnaden mellan SQL Server Management Studio och Express-utgåvan?

  4. Utgör phpMyAdmin säkerhetsrisk vid produktion