sql >> Database >  >> RDS >> Sqlserver

Een string invoegen in een andere string in SQL Server met STUFF()

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 .


  1. Stel lege strings ('') in op NULL in de hele database

  2. De beste manier om een ​​Oracle-reeks te resetten naar de volgende waarde in een bestaande kolom?

  3. Hoe flexibel/beperkend zijn SQLite-kolomtypen?

  4. De huidige rowversion-waarde voor een SQL Server-database retourneren (T-SQL-voorbeeld)