sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man infogar en sträng i en annan sträng i SQL Server med STUFF()

I SQL Server kan du använda T-SQL STUFF() funktion för att infoga en sträng i en annan sträng. Detta gör att du kan göra saker som att infoga ett ord på en specifik position. Det låter dig också ersätta ett ord på en specifik position.

Här är den officiella syntaxen:

STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression är originalsträngen. Detta kan faktiskt vara en konstant, variabel eller kolumn med antingen tecken eller binär data.
  • start anger startpositionen (dvs. där den nya strängen kommer att infogas).
  • length är hur många tecken som ska tas bort från den ursprungliga strängen.
  • replaceWith_expression är strängen som infogas. replaceWith_expression kan vara en konstant, variabel eller kolumn med antingen tecken eller binär data.

Ersätt ett ord

Här är ett exempel där jag ersätter ett ord i en sträng.

SELECT STUFF('Cats and dogs', 6, 3, 'like');

Resultat:

Cats like dogs

I det här fallet anger jag att ordet like ska infogas vid position 6, och att 3 tecken ska tas bort från den ursprungliga strängen (detta tar bort ordet and ). Alltså ordet and raderas och ordet like är infogat.

Infoga ett ord

Här är ett exempel på att infoga ett ord utan att ta bort något från den ursprungliga strängen:

SELECT STUFF('Cats and dogs', 10, 0, 'big ');

Resultat:

Cats and big dogs

Ingenting raderas från den ursprungliga strängen eftersom jag angav 0 som det tredje argumentet.

Värden utanför intervallet

Om startpositionen är utanför längden på den ursprungliga strängen, returneras ett NULL-värde.

Exempel:

SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');

Resultat:

NULL

I det här fallet är den ursprungliga strängen inte 20 tecken lång, så resultatet är NULL .

Samma sak händer om du anger 0 eller ett negativt tal:

SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');

Resultat:

NULL

Resultatet av dessa exempel står i kontrast till MySQL:s INSERT() funktion, som skulle ha returnerat den ursprungliga strängen i detta scenario. MySQL:s INSERT() gör i princip samma sak som T-SQL:s STUFF() (förutom fall som dessa).

Infoga NULL-värden

Om du infogar ett NULL-värde kommer ditt resultat helt enkelt att ta bort det angivna antalet tecken från den angivna positionen. Med andra ord, ingenting infogas, men tecken tas fortfarande bort som specificerat.

Exempel:

SELECT STUFF('Cats and dogs', 6, 3, NULL);

Resultat:

Cats dogs

Detta är ett annat område där MySQL skiljer sig från T-SQL. Gör det här exemplet med MySQL:s INSERT() funktion skulle ha returnerat ett resultat av NULL .


  1. Hur man ser den faktiska Oracle SQL-satsen som körs

  2. Hur man återställer en SQL Server-databas på en Mac med SQL Operations Studio

  3. Anslut till MSSQL-databasen med Flask-SQLAlchemy

  4. Python från grunden:Skapa en dynamisk webbplats