Hvis du er bekendt med SQL-server, ved du måske, at du kan bruge T-SQL STUFF()
funktion til at indsætte en streng i en streng. Som det viser sig, har MySQL en lignende funktion – men med et andet navn.
MySQL's INSERT()
funktion gør stort set det samme som T-SQL STUFF()
funktion gør.
Med undtagelse af et par mindre forskelle (se nedenfor), fungerer begge funktioner nøjagtigt det samme.
Syntaks
Her er den officielle syntaks for hver af disse funktioner.
T-SQL – STUFF()-funktionen
STUFF ( character_expression , start , length , replaceWith_expression )
MySQL – INSERT()-funktionen
INSERT(str,pos,len,newstr)
Selvom hver af disse definitioner bruger forskellig terminologi, gør de grundlæggende det samme.
Eksempler
Her er et eksempel på hver af disse funktioner i aktion.
T-SQL – STUFF()-funktionen
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Resultat:
Cats like dogs
MySQL – INSERT()-funktionen
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultat:
Cats like dogs
Som du kan se, er den eneste forskel funktionsnavnet. Vi kan overføre den ene til den anden ved blot at ændre navnet på funktionen.
Forskelle mellem STUFF() og INSERT()
Der er et par forskelle i, hvordan disse funktioner fungerer. Især er de to vigtigste forskelle, hvordan de håndterer:
- Uden for rækkevidde
- NULL-værdier
Disse forskelle er forklaret nedenfor.
Positioner uden for rækkevidde
Hvis du forsøger at indsætte på en position, der er uden for længden af den originale streng, vil MySQL's INSERT()
funktion vil returnere den oprindelige streng. På den anden side T-SQL's STUFF()
funktionen returnerer NULL
.
T-SQL – STUFF()-funktionen
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Resultat:
NULL
MySQL – INSERT()-funktionen
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultat:
Cats and dogs
NULL-værdier
Disse to funktioner adskiller sig også i, hvordan de håndterer eventuelle NULL-værdier, du forsøger at indsætte.
T-SQL – STUFF()-funktionen
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Resultat:
Cats dogs
T-SQL – INSERT()-funktionen
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultat:
NULL