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.