SQLite replace()
funkcja umożliwia nam zastąpienie jednego ciągu (lub części ciągu) innym ciągiem.
Działa to tak, że podajesz trzy argumenty; ciąg, który zawiera podciąg do zastąpienia, podciąg w tym ciągu do zastąpienia i ciąg, którym należy go zastąpić.
Składnia
Składnia wygląda tak:
replace(X,Y,Z)
Funkcja zwraca ciąg utworzony przez podstawienie ciągu Z za każde wystąpienie ciągu Y w ciągu X.
Do porównań używana jest sekwencja zestawiania BINARNEGO. Jeśli Y jest pustym ciągiem, zwróć X bez zmian. Jeśli Z nie jest początkowo łańcuchem, jest rzutowany na łańcuch UTF-8 przed przetwarzaniem.
Przykład
Oto prosty przykład do zademonstrowania.
SELECT replace('Red Sky', 'Red', 'Blue');
Wynik:
Blue Sky
Jeśli drugi argument nie zostanie znaleziony w pierwszym argumencie, nic nie jest zastępowane i zwracany jest oryginalny ciąg.
SELECT replace('Red Sky', 'Green', 'Blue');
Wynik:
Red Sky
Jeśli drugi argument jest pustym ciągiem, to znowu nic nie jest zastępowane i zwracany jest oryginalny ciąg.
SELECT replace('Red Sky', '', 'Blue');
Wynik:
Red Sky
Ale tego samego nie można powiedzieć o trzecim argumencie. Jeśli jest to pusty ciąg (a drugi argument znajduje się w pierwszym argumencie), to usunie drugi argument z ciągu.
SELECT replace('Red Sky', 'Red', '');
Wynik:
Sky
Jednak tak się nie stanie, jeśli drugi argument nie zostanie znaleziony w ciągu.
SELECT replace('Red Sky', 'Blue', '');
Wynik:
Red Sky
Zastępowanie nieciągiem
Jeśli trzeci argument nie jest łańcuchem, jest rzutowany na łańcuch UTF-8 przed przetwarzaniem.
SELECT replace('Red Sky', 'Red', 8);
Wynik:
8 Sky
Przykład bazy danych
Oto przykład, który pobiera dane z tabeli bazy danych i zastępuje dany ciąg/podciąg innym ciągiem.
SELECT
ProductName,
replace(ProductName, 'Widget', 'Car')
FROM Products;
Wynik:
ProductName replace(ProductName, 'Widget', 'Car') -------------- ------------------------------------- Homer's Widget Homer's Car Peter's Widget Peter's Car Bob's Widget Bob's Car