In MySQL kunt u de INSERT()
. gebruiken functie om een string in een andere string in te voegen.
U kunt delen van de tekenreeks vervangen door een andere tekenreeks (bijvoorbeeld een woord vervangen), of u kunt deze invoegen met behoud van de oorspronkelijke tekenreeks (bijvoorbeeld een woord toevoegen). De functie accepteert 4 argumenten die bepalen wat de originele string is, de positie waarmee de nieuwe string moet worden ingevoegd, het aantal tekens dat moet worden verwijderd uit de originele string en de nieuwe string die moet worden ingevoegd.
Dit is de syntaxis:
INSERT(str,pos,len,newstr)
Waar str
is de originele string, pos
is de positie waar de nieuwe string zal worden ingevoegd, len
is het aantal tekens dat uit de originele tekenreeks moet worden verwijderd, en newstr
is de nieuwe tekenreeks die moet worden ingevoegd.
Een woord vervangen
Hier is een voorbeeld waarbij ik INSERT()
. gebruik om een woord in een tekenreeks te vervangen:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultaat:
Cats like dogs
Dit vervangt effectief het woord and
met het woord like
. Ik gebruikte 6
omdat het woord en begon bij het teken van 6 tekens, en ik gebruikte 3
want dat is het aantal tekens dat ik wil verwijderen (het woord and
is 3 tekens lang).
Voeg een woord in
Hier voeg ik gewoon een woord in zonder iets uit de originele string te verwijderen:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Resultaat:
Cats and big dogs
De reden dat dit niets van de originele string verwijdert, is omdat ik 0
. heb opgegeven (wat betekent dat nul tekens moeten worden verwijderd).
Waarden buiten bereik
Als je een positie opgeeft die buiten de lengte van de originele string ligt, zal MySQL de originele string ongewijzigd teruggeven.
Voorbeeld:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultaat:
Cats and dogs
Hier is nog een voorbeeld waarbij ik een negatieve startpositie gebruik:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Resultaat:
Cats and dogs
Dit is een van de verschillen tussen MySQL's INSERT()
functie en Transact-SQL's STUFF()
functie. In T-SQL is de STUFF()
functie zou NULL
teruggeven in deze gevallen.
NULL-waarden invoegen
Een ander gebied waar MySQL's INSERT()
verschilt van T-SQL's STUFF()
is met NULL-waarden. Als u een NULL-waarde probeert in te voegen, retourneert MySQL NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultaat:
NULL