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