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