W MariaDB, REPLACE()
jest wbudowaną funkcją ciągów znaków, która umożliwia zastąpienie części ciągu innym ciągiem.
Funkcja przyjmuje trzy argumenty:ciąg, podciąg do zastąpienia i ciąg do zastąpienia podciągu.
Składnia
Składnia wygląda tak:
REPLACE(str,from_str,to_str)
Gdzie str
jest ciągiem, a from_str
jest podciągiem do zastąpienia, a to_str
jest ciągiem, którym należy zastąpić ten podciąg.
Przykład
Oto podstawowy przykład:
SELECT REPLACE('Black dog', 'dog', 'cat');
Wynik:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
W tym przypadku zastąpiliśmy podciąg dog
z cat
.
Wiele meczów
Jeśli ciąg, który ma zostać zastąpiony, występuje wiele razy w ciągu, wszystkie wystąpienia są zastępowane:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Wynik:
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
Brak dopasowania
Jeśli podciąg nie występuje w ciągu, REPLACE()
zwraca ciąg niezmieniony:
SELECT REPLACE('Black dog', 'horse', 'cat');
Wynik:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Wrażliwość na wielkość liter
REPLACE()
funkcja wykonuje dopasowanie z uwzględnieniem wielkości liter:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Wynik:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
W tym przykładzie obudowa nie pasowała, więc nic nie zostało zastąpione.
Puste ciągi
Oto, co się dzieje, gdy dla każdego podanego argumentu zostanie przekazany pusty ciąg:
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3";
Wynik:
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
Więc w tym przypadku:
- Przekazanie pustego ciągu dla początkowego ciągu zwraca pusty ciąg.
- Przekazanie pustego ciągu dla drugiego argumentu zwraca oryginalny ciąg.
- Przekazanie pustego ciągu dla trzeciego argumentu usuwa ciąg, który ma zostać zastąpiony z ciągu.
Znak spacji
Pusty ciąg to nie to samo, co znak spacji.
Oto, co się dzieje, gdy zmieniamy pusty ciąg na spację:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Wynik:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Dlatego jeśli ciąg jest tylko spacją, możemy go zastąpić innym ciągiem:
SELECT REPLACE(' ', ' ', 'cat');
Wynik:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Argumenty zerowe
Podanie null
wyniki w null
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
Wynik:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Brakujący argument
Wywołanie REPLACE()
z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT REPLACE();
Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1