MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

2 sposoby na zastąpienie podciągu w MariaDB

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować i zabezpieczyć MariaDB na Debianie 9?

  2. DBaaS, chmura i przejrzysty routing zapytań

  3. MariaDB LENGTH() vs LENGTHB():Jaka jest różnica?

  4. MariaDB JSON_MERGE() Objaśnienie

  5. Jak wdrożyć gotowy do produkcji klaster MySQL lub MariaDB Galera za pomocą ClusterControl