I MySQL kan du bruge INSERT()
funktion til at indsætte en streng i en anden streng.
Du kan enten erstatte dele af strengen med en anden streng (f.eks. udskifte et ord), eller du kan indsætte den, mens du bibeholder den originale streng (f.eks. tilføje et ord). Funktionen accepterer 4 argumenter, som bestemmer, hvad den oprindelige streng er, positionen til at indsætte den nye streng med, antallet af tegn, der skal slettes fra den originale streng, og den nye streng, der skal indsættes.
Her er syntaksen:
INSERT(str,pos,len,newstr)
Hvor str
er den originale streng, pos
er den position, hvor den nye streng vil blive indsat, len
er antallet af tegn, der skal slettes fra den originale streng, og newstr
er den nye streng, der skal indsættes.
Erstat et Word
Her er et eksempel, hvor jeg bruger INSERT()
for at erstatte et ord i en streng:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultat:
Cats like dogs
Dette erstatter effektivt ordet and
med ordet like
. Jeg brugte 6
fordi ordet og startede med 6 tegn, og jeg brugte 3
fordi det er hvor mange tegn jeg vil slette (ordet and
er 3 tegn langt).
Indsæt et ord
Her indsætter jeg blot et ord uden at slette noget fra den originale streng:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Resultat:
Cats and big dogs
Grunden til at dette ikke sletter noget fra den originale streng, er fordi jeg har angivet 0
(hvilket betyder, at nul tegn skal slettes).
Værdier uden for område
Hvis du angiver en position, der er uden for længden af den originale streng, vil MySQL returnere den oprindelige streng uændret.
Eksempel:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultat:
Cats and dogs
Her er et andet eksempel, hvor jeg bruger en negativ startposition:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Resultat:
Cats and dogs
Dette er en af forskellene mellem MySQL's INSERT()
funktion og Transact-SQL's STUFF()
fungere. I T-SQL er STUFF()
funktion ville returnere NULL
i disse tilfælde.
Indsættelse af NULL-værdier
Et andet område, hvor MySQL's INSERT()
adskiller sig fra T-SQL's STUFF()
er med NULL-værdier. Hvis du forsøger at indsætte en NULL-værdi, vil MySQL returnere NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultat:
NULL