De SQLite replace()
functie stelt ons in staat om een string (of een deel van een string) te vervangen door een andere string.
De manier waarop het werkt is dat je drie argumenten geeft; de tekenreeks die de te vervangen subtekenreeks bevat, de subtekenreeks binnen die tekenreeks die moet worden vervangen en de tekenreeks waarmee deze moet worden vervangen.
Syntaxis
De syntaxis gaat als volgt:
replace(X,Y,Z)
De functie retourneert een tekenreeks die wordt gevormd door tekenreeks Z te vervangen voor elk voorkomen van tekenreeks Y in tekenreeks X.
De BINAIRE sorteervolgorde wordt gebruikt voor vergelijkingen. Als Y een lege string is, retourneer dan X ongewijzigd. Als Z in eerste instantie geen string is, wordt deze voorafgaand aan de verwerking naar een UTF-8-string gegoten.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren.
SELECT replace('Red Sky', 'Red', 'Blue');
Resultaat:
Blue Sky
Als het tweede argument niet wordt gevonden in het eerste argument, wordt er niets vervangen en wordt de oorspronkelijke string geretourneerd.
SELECT replace('Red Sky', 'Green', 'Blue');
Resultaat:
Red Sky
Als het tweede argument een lege string is, wordt er niets vervangen en wordt de originele string teruggegeven.
SELECT replace('Red Sky', '', 'Blue');
Resultaat:
Red Sky
Maar hetzelfde kan niet gezegd worden over het derde argument. Als dat een lege string is (en het tweede argument wordt gevonden in het eerste argument), dan wordt het tweede argument uit de string verwijderd.
SELECT replace('Red Sky', 'Red', '');
Resultaat:
Sky
Dit gebeurt echter niet als het tweede argument niet in de string wordt gevonden.
SELECT replace('Red Sky', 'Blue', '');
Resultaat:
Red Sky
Vervangen door een niet-string
Als het derde argument geen string is, wordt het voorafgaand aan de verwerking naar een UTF-8-string gecast.
SELECT replace('Red Sky', 'Red', 8);
Resultaat:
8 Sky
Databasevoorbeeld
Hier is een voorbeeld dat gegevens uit een databasetabel haalt en een bepaalde tekenreeks/subtekenreeks vervangt door een andere tekenreeks.
SELECT
ProductName,
replace(ProductName, 'Widget', 'Car')
FROM Products;
Resultaat:
ProductName replace(ProductName, 'Widget', 'Car') -------------- ------------------------------------- Homer's Widget Homer's Car Peter's Widget Peter's Car Bob's Widget Bob's Car