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