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

Jak TRIM() działa w MariaDB

W MariaDB TRIM() to wbudowana funkcja ciągów znaków, która usuwa znaki z początku lub końca ciągu.

Domyślnie usuwa spacje wiodące i końcowe, ale możesz określić, który znak ma zostać usunięty, a także z której strony chcesz go usunąć.

Składnia

TRIM() funkcja może być używana w następujący sposób:

TRIM([remstr FROM] str)

Lub:

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

Gdzie str jest ciągiem, z którego usuwane są wszystkie końcowe spacje, a remstr to ciąg do usunięcia.

Jeśli remstr nie jest podana, to TRIM() usuwa spacje.

Przykład

Oto podstawowy przykład:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM('   Caribbean Island   ') AS "Trimmed";

Wynik:

+------------------------+------------------+
| Untrimmed              | Trimmed          |
+------------------------+------------------+
|    Caribbean Island    | Caribbean Island |
+------------------------+------------------+

W tym przykładzie użyto najbardziej podstawowej składni. Wszystko, co zrobiliśmy, to dostarczenie sznurka do przycięcia. Nie określiliśmy, które znaki należy przyciąć, więc wszystkie spacje zostały przycięte z obu stron ciągu.

Możemy również zobaczyć, że spacja w ciągu pozostaje nienaruszona.

BOTH Argument

Domyślnie TRIM() lamuje obie strony sznurka. Możesz jednak jawnie określić BOTH jeśli chcesz:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM(BOTH FROM '   Caribbean Island   ') AS "Trimmed";

Wynik:

+------------------------+------------------+
| Untrimmed              | Trimmed          |
+------------------------+------------------+
|    Caribbean Island    | Caribbean Island |
+------------------------+------------------+

Otrzymujemy ten sam wynik, co w poprzednim przykładzie.

LEADING Argument

Określanie LEADING ogranicza operację przycinania tylko do początku ciągu:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM(LEADING FROM '   Caribbean Island   ') AS "Trimmed";

Wynik:

+------------------------+---------------------+
| Untrimmed              | Trimmed             |
+------------------------+---------------------+
|    Caribbean Island    | Caribbean Island    |
+------------------------+---------------------+

Widzimy, że spacje nadal istnieją po prawej stronie przyciętego ciągu. Tylko lewa część została przycięta.

TRAILING Argument

Określanie TRAILING ogranicza operację przycinania tylko do początku ciągu:

SELECT 
    '   Caribbean Island   ' AS "Untrimmed",
    TRIM(TRAILING FROM '   Caribbean Island   ') AS "Trimmed";

Wynik:

+------------------------+---------------------+
| Untrimmed              | Trimmed             |
+------------------------+---------------------+
|    Caribbean Island    | Caribbean Island    |
+------------------------+---------------------+

Tym razem przycięto tylko prawą część. Spacje nadal istnieją po lewej stronie przyciętego ciągu.

Określ ciąg do przycięcia

Oto przykład określania znaku do przycięcia:

SELECT 
    '...mountain...' AS "Untrimmed",
    TRIM('.' FROM '...mountain...') AS "Trimmed";

Wynik:

+----------------+----------+
| Untrimmed      | Trimmed  |
+----------------+----------+
| ...mountain... | mountain |
+----------------+----------+

Nie musi to być pojedyncza postać. Możesz określić dowolny ciąg do przycięcia:

SELECT 
    TRIM('.' FROM '.+.mountain.+.') AS "1",
    TRIM('.+' FROM '.+.mountain.+.') AS "2",
    TRIM('+.' FROM '.+.mountain.+.') AS "3",
    TRIM('.+.' FROM '.+.mountain.+.') AS "4";

Wynik:

+--------------+--------------+--------------+----------+
| 1            | 2            | 3            | 4        |
+--------------+--------------+--------------+----------+
| +.mountain.+ | .mountain.+. | .+.mountain. | mountain |
+--------------+--------------+--------------+----------+

Możesz nawet przyciąć część słowa, jeśli chcesz:

SELECT TRIM('moun' FROM 'mountain');

Wynik:

+------------------------------+
| TRIM('moun' FROM 'mountain') |
+------------------------------+
| tain                         |
+------------------------------+

Możemy również użyć BOTH , LEADING i TRAILING argumenty podczas określania ciągu do przycięcia.

Przykład:

SELECT 
    TRIM(BOTH '.' FROM '...mountain...') AS "Both",
    TRIM(LEADING '.' FROM '...mountain...') AS "Leading",
    TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";

Wynik:

+----------+-------------+-------------+
| Both     | Leading     | Trailaing   |
+----------+-------------+-------------+
| mountain | mountain... | ...mountain |
+----------+-------------+-------------+

Argumenty zerowe

Jeśli podano null argumentem, wynikiem jest null :

SELECT TRIM(null);

Wynik:

+------------+
| TRIM(null) |
+------------+
| NULL       |
+------------+

Tryb Oracle

Kiedy nie działa w trybie Oracle, jeśli wynik jest pusty (tj. ma długość równą zero), wynikiem jest pusty ciąg.

Jednak podczas pracy w trybie Oracle wynik to null .

Tutaj jest w trybie domyślnym (tzn. nie w trybie Oracle):

SELECT TRIM('');

Wynik:

+----------+
| TRIM('') |
+----------+
|          |
+----------+

Przejdźmy teraz do trybu Oracle:

SET SQL_MODE=ORACLE;

I uruchom kod ponownie:

SELECT TRIM('');

Wynik:

+----------+
| TRIM('') |
+----------+
| NULL     |
+----------+

Istnieje również alternatywny sposób na zrobienie tego. Zamiast przełączać się w tryb Oracle, możesz użyć TRIM_ORACLE() jako nazwę funkcji.

Wróćmy do trybu domyślnego:

SET SQL_MODE=DEFAULT;

A teraz uruchom TRIM_ORACLE() :

SELECT TRIM_ORACLE('');

Wynik:

+-----------------+
| TRIM_ORACLE('') |
+-----------------+
| NULL            |
+-----------------+

Brakujący argument

Wywołanie TRIM() bez argumentu powoduje błąd:

SELECT TRIM();

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

  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 działa UPPER() w MariaDB

  2. Jak wydajny jest Twój węzeł ProxySQL?

  3. Co nowego w MariaDB MaxScale 2.4

  4. Jak FLOOR() działa w MariaDB

  5. Pierwsze kroki z ProxySQL — samouczek dotyczący równoważenia obciążenia MySQL i MariaDB