Om du behöver ersätta en delsträng med en annan sträng i MariaDB, här är två metoder som du kan använda.
REPLACE()
Funktion
I MariaDB, REPLACE()
funktion är utformad specifikt för att ersätta en delsträng i en annan sträng.
Du ger tre argument när du anropar funktionen. Dessa är strängen, understrängen och ersättningssträngen.
Exempel:
SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat');
Resultat:
+----------------------------------------------------+ | REPLACE('My dog likes to dig holes', 'dog', 'cat') | +----------------------------------------------------+ | My cat likes to dig holes | +----------------------------------------------------+
I det här fallet ersatte vi delsträngen dog
med cat
.
Om strängen som ska ersättas förekommer flera gånger i strängen, ersätts alla förekomster:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Resultat:
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
REPLACE()
funktionen utför en skiftlägeskänslig matchning.
Se hur REPLACE()
Fungerar i MariaDB för fler exempel.
REGEXP_REPLACE()
Funktion
REGEXP_REPLACE()
funktionen liknar REPLACE()
funktion, förutom att den låter dig göra mönstermatchning med hjälp av reguljära uttryck.
Detta gör REGEXP_REPLACE()
kraftfullare än REPLACE()
, eftersom du kan matcha mot delar av en sträng för att ersätta delsträngar som skulle vara svårare eller omöjliga att matcha när du bara använder REPLACE()
.
Exempel:
SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog');
Resultat:
+-------------------------------------------------+ | REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') | +-------------------------------------------------+ | My dog has dogs | +-------------------------------------------------+
Reguljära uttryck kan vara mycket kraftfulla, och det här exemplet använder ett mycket enkelt exempel. För att använda REGEXP_REPLACE()
i praktiken måste du känna till det korrekta mönstret att använda för det önskade resultatet.
Det är också möjligt att tillhandahålla den fullständiga bokstavliga strängen som mönstret, precis som du skulle använda med REPLACE()
funktion.
Därför skulle vi kunna skriva om det första exemplet på den här sidan för att använda REGEXP_REPLACE()
istället för REPLACE()
.
Här är ett exempel som kör dem sida vid sida för att illustrera vad jag menar:
SELECT
REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()";
Resultat:
+---------------------------+---------------------------+ | REPLACE() | REGEXP_REPLACE() | +---------------------------+---------------------------+ | My cat likes to dig holes | My cat likes to dig holes | +---------------------------+---------------------------+
Även REGEXP_REPLACE()
funktionen följer reglerna för skiftlägeskänslighet för den effektiva sorteringen. Matchning utförs skiftlägesokänsligt för skiftlägesokänsliga sorteringar och skiftlägeskänsliga för skiftlägeskänsliga sorteringar och för binära data. Däremot kan sorteringens skiftlägeskänslighet åsidosättas med hjälp av (?i
) och (?-i
) PCRE-flaggor.
Se hur REGEXP_REPLACE()
Fungerar i MariaDB för exempel på skiftlägeskänslighet med mera.