sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan indsætter du en streng i en anden streng i SQL Server ved hjælp af STUFF()

I SQL Server kan du bruge T-SQL STUFF() funktion til at indsætte en streng i en anden streng. Dette giver dig mulighed for at gøre ting som at indsætte et ord på en bestemt position. Det giver dig også mulighed for at erstatte et ord på en bestemt position.

Her er den officielle syntaks:

STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression er den originale streng. Dette kan faktisk være en konstant, variabel eller kolonne med enten tegn eller binære data.
  • start angiver startpositionen (dvs. hvor den nye streng vil blive indsat).
  • length er, hvor mange tegn der skal slettes fra den originale streng.
  • replaceWith_expression er den streng, der indsættes. replaceWith_expression kan være en konstant, variabel eller kolonne af enten tegn eller binære data.

Erstat et Word

Her er et eksempel, hvor jeg erstatter et ord i en streng.

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

Resultat:

Cats like dogs

I dette tilfælde angiver jeg, at ordet like skal indsættes ved position 6, og at 3 tegn skal slettes fra den oprindelige streng (dette sletter ordet and ). Altså ordet and slettes og ordet like er indsat.

Indsæt et ord

Her er et eksempel på at indsætte et ord uden at slette noget fra den originale streng:

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

Resultat:

Cats and big dogs

Intet er slettet fra den originale streng, fordi jeg har angivet 0 som det tredje argument.

Værdier uden for område

Hvis startpositionen er uden for længden af ​​den oprindelige streng, returneres en NULL-værdi.

Eksempel:

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

Resultat:

NULL

I dette tilfælde er den originale streng ikke 20 tegn lang, så resultatet er NULL .

Det samme sker, hvis du angiver 0 eller et negativt tal:

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

Resultat:

NULL

Resultatet af disse eksempler er i modsætning til MySQL's INSERT() funktion, som ville have returneret den oprindelige streng i dette scenarie. MySQL's INSERT() gør stort set det samme som T-SQL's STUFF() (bortset fra tilfælde som disse).

Indsættelse af NULL-værdier

Hvis du indsætter en NULL-værdi, vil dit resultat blot fjerne det angivne antal tegn fra den angivne position. Der er med andre ord ikke indsat noget, men tegn fjernes stadig som angivet.

Eksempel:

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

Resultat:

Cats dogs

Dette er et andet område, hvor MySQL adskiller sig fra T-SQL. Gør dette eksempel med MySQL's INSERT() funktion ville have returneret et resultat af NULL .


  1. Brug af bindevariable med dynamisk SELECT INTO-sætning i PL/SQL

  2. Få en liste over alle borde i Oracle?

  3. Brug OBJECTPROPERTY() til at finde ud af, om et objekt er en CHECK-begrænsning i SQL Server

  4. SQL DELETE med INNER JOIN