Jeśli musisz zastąpić podciąg innym ciągiem w MariaDB, możesz skorzystać z dwóch podejść.
REPLACE()
Funkcja
W MariaDB funkcja REPLACE()
Funkcja została zaprojektowana specjalnie w celu zastąpienia podciągu w innym ciągu.
Podczas wywoływania funkcji podajesz trzy argumenty. Są to ciąg, podciąg i zastępczy ciąg.
Przykład:
SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat');
Wynik:
+----------------------------------------------------+ | REPLACE('My dog likes to dig holes', 'dog', 'cat') | +----------------------------------------------------+ | My cat likes to dig holes | +----------------------------------------------------+
W tym przypadku zastąpiliśmy podciąg dog
z cat
.
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 | +----------------------------------------------------+
REPLACE()
funkcja wykonuje dopasowanie z uwzględnieniem wielkości liter.
Zobacz, jak REPLACE()
Działa w MariaDB, aby uzyskać więcej przykładów.
REGEXP_REPLACE()
Funkcja
REGEXP_REPLACE()
funkcja jest podobna do REPLACE()
funkcja, z wyjątkiem tego, że pozwala na dopasowanie wzorców za pomocą wyrażeń regularnych.
To sprawia, że REGEXP_REPLACE()
potężniejszy niż REPLACE()
, ponieważ możesz dopasować części ciągu, aby zastąpić podciągi, które byłyby trudniejsze lub niemożliwe do dopasowania przy użyciu samego REPLACE()
.
Przykład:
SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog');
Wynik:
+-------------------------------------------------+ | REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') | +-------------------------------------------------+ | My dog has dogs | +-------------------------------------------------+
Wyrażenia regularne mogą mieć bardzo duże możliwości, a w tym przykładzie użyto bardzo prostego przykładu. Aby użyć REGEXP_REPLACE()
skutecznie, będziesz musiał znać właściwy wzór, aby uzyskać pożądany efekt.
Możliwe jest również podanie pełnego ciągu literału jako wzorca, tak jak w przypadku REPLACE()
funkcja.
Dlatego moglibyśmy przepisać pierwszy przykład na tej stronie, aby użyć REGEXP_REPLACE()
zamiast REPLACE()
.
Oto przykład, który pokazuje je obok siebie, aby zilustrować, o co mi chodzi:
SELECT
REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()";
Wynik:
+---------------------------+---------------------------+ | REPLACE() | REGEXP_REPLACE() | +---------------------------+---------------------------+ | My cat likes to dig holes | My cat likes to dig holes | +---------------------------+---------------------------+
Ponadto REGEXP_REPLACE()
Funkcja jest zgodna z regułami rozróżniania wielkości liter efektywnego sortowania. Dopasowywanie jest wykonywane bez rozróżniania wielkości liter w przypadku sortowania bez rozróżniania wielkości liter i z rozróżnianiem wielkości liter w przypadku sortowania z rozróżnianiem wielkości liter i danych binarnych. Jednak rozróżnianie wielkości liter w sortowaniu można nadpisać za pomocą (?i
) i (?-i
) Flagi PCRE.
Zobacz, jak REGEXP_REPLACE()
Działa w MariaDB, aby uzyskać przykłady rozróżniania wielkości liter i nie tylko.