In SQL Server kunt u de T-SQL STUFF()
functie om een string in een andere string in te voegen. Hiermee kunt u bijvoorbeeld een woord op een specifieke positie invoegen. U kunt er ook een woord op een specifieke positie mee vervangen.
Dit is de officiële syntaxis:
STUFF ( character_expression , start , length , replaceWith_expression )
character_expression
is de originele string. Dit kan een constante, variabele of kolom zijn met tekens of binaire gegevens.start
specificeert de startpositie (d.w.z. waar de nieuwe string zal worden ingevoegd).length
is hoeveel tekens er uit de originele string moeten worden verwijderd.replaceWith_expression
is de string die wordt ingevoegd.replaceWith_expression
kan een constante, variabele of kolom zijn van tekens of binaire gegevens.
Een woord vervangen
Hier is een voorbeeld waarbij ik een woord in een tekenreeks vervang.
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Resultaat:
Cats like dogs
In dit geval specificeer ik dat het woord like
op positie 6 moet worden ingevoegd, en dat 3 tekens uit de originele tekenreeks moeten worden verwijderd (hiermee worden de woorden and
verwijderd ). Dus het woord and
is verwijderd en het woord like
is ingevoegd.
Voeg een woord in
Hier is een voorbeeld van het invoegen van een woord zonder iets uit de originele tekenreeks te verwijderen:
SELECT STUFF('Cats and dogs', 10, 0, 'big ');
Resultaat:
Cats and big dogs
Er is niets verwijderd uit de originele string omdat ik 0
heb opgegeven als het derde argument.
Waarden buiten bereik
Als de startpositie buiten de lengte van de originele string ligt, wordt een NULL-waarde geretourneerd.
Voorbeeld:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Resultaat:
NULL
In dit geval is de originele tekenreeks niet 20 tekens lang, dus het resultaat is NULL
.
Hetzelfde gebeurt als u 0
. opgeeft of een negatief getal:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');
Resultaat:
NULL
Het resultaat van deze voorbeelden is in tegenstelling tot MySQL's INSERT()
functie, die in dit scenario de oorspronkelijke tekenreeks zou hebben geretourneerd. MySQL's INSERT()
doet in principe hetzelfde als T-SQL's STUFF()
(behalve voor gevallen als deze).
NULL-waarden invoegen
Als u een NULL-waarde invoegt, verwijdert uw resultaat eenvoudig het aangegeven aantal tekens van de aangegeven positie. Met andere woorden, er wordt niets ingevoegd, maar tekens worden nog steeds verwijderd zoals gespecificeerd.
Voorbeeld:
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Resultaat:
Cats dogs
Dit is een ander gebied waar MySQL verschilt van T-SQL. Dit voorbeeld doen met MySQL's INSERT()
functie zou een resultaat van NULL
. hebben geretourneerd .