Om du är bekant med SQL-server kanske du vet att du kan använda T-SQL STUFF()
funktion för att infoga en sträng i en sträng. Som det visar sig har MySQL en liknande funktion – men med ett annat namn.
MySQL:s INSERT()
funktion gör i huvudsak samma sak som T-SQL STUFF()
funktion gör det.
Med undantag för ett par mindre skillnader (se nedan) fungerar båda funktionerna exakt likadant.
Syntax
Här är den officiella syntaxen för var och en av dessa funktioner.
T-SQL – STUFF()-funktionen
STUFF ( character_expression , start , length , replaceWith_expression )
MySQL – INSERT()-funktionen
INSERT(str,pos,len,newstr)
Även om var och en av dessa definitioner använder olika terminologi, gör de i princip samma sak.
Exempel
Här är ett exempel på var och en av dessa funktioner i funktion.
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 är den enda skillnaden funktionsnamnet. Vi kan porta den ena till den andra genom att helt enkelt ändra namnet på funktionen.
Skillnader mellan STUFF() och INSERT()
Det finns ett par skillnader i hur dessa funktioner fungerar. I synnerhet är de två huvudsakliga skillnaderna hur de hanterar:
- Positioner utanför räckvidd
- NULL-värden
Dessa skillnader förklaras nedan.
Positioner utanför räckvidd
Om du försöker infoga på en position som är utanför längden på den ursprungliga strängen, MySQL:s INSERT()
funktion returnerar den ursprungliga strängen. Å andra sidan, T-SQL:s STUFF()
funktionen returnerar 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ärden
Dessa två funktioner skiljer sig också åt i hur de hanterar eventuella NULL-värden du försöker infoga.
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