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