W MySQL możesz użyć INSERT()
funkcja, aby wstawić ciąg do innego ciągu.
Możesz zastąpić części ciągu innym ciągiem (np. zamienić słowo) lub wstawić go z zachowaniem oryginalnego ciągu (np. dodać słowo). Funkcja akceptuje 4 argumenty, które określają, jaki jest oryginalny ciąg, pozycję, w której należy wstawić nowy ciąg, liczbę znaków do usunięcia z oryginalnego ciągu i nowy ciąg do wstawienia.
Oto składnia:
INSERT(str,pos,len,newstr)
Gdzie str
jest oryginalnym ciągiem, pos
jest pozycją, w której zostanie wstawiony nowy ciąg, len
to liczba znaków do usunięcia z oryginalnego ciągu, a newstr
to nowy ciąg do wstawienia.
Zamień słowo
Oto przykład, w którym używam INSERT()
zastąpić słowo w ciągu:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Wynik:
Cats like dogs
To skutecznie zastępuje słowo and
ze słowem like
. Użyłem 6
ponieważ słowo i zaczynało się od znaku 6, a ja użyłem 3
bo tyle znaków chcę usunąć (słowo and
ma długość 3 znaków).
Wstaw słowo
Tutaj po prostu wstawiam słowo bez usuwania czegokolwiek z oryginalnego ciągu:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Wynik:
Cats and big dogs
Powodem, dla którego to nie usuwa niczego z oryginalnego ciągu, jest to, że określiłem 0
(co oznacza, że należy usunąć zero znaków).
Wartości poza zakresem
Jeśli określisz pozycję, która znajduje się poza długością oryginalnego ciągu, MySQL zwróci oryginalny ciąg bez zmian.
Przykład:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Wynik:
Cats and dogs
Oto kolejny przykład, w którym używam ujemnej pozycji początkowej:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Wynik:
Cats and dogs
Jest to jedna z różnic między INSERT()
MySQL'a funkcji i funkcji STUFF()
języka Transact-SQL funkcjonować. W T-SQL, STUFF()
funkcja zwróci NULL
w takich przypadkach.
Wstawianie wartości NULL
Kolejny obszar, w którym INSERT()
w MySQL różni się od STUFF()
T-SQLa ma wartości NULL. Jeśli spróbujesz wstawić wartość NULL, MySQL zwróci NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Wynik:
NULL