V MariaDB, TRIM()
je vestavěná funkce řetězce, která odstraňuje znaky ze začátku nebo konce řetězce.
Ve výchozím nastavení odstraňuje mezery na začátku a na konci, ale můžete určit, který znak se má odstranit, a také ze které strany/stran jej chcete odstranit.
Syntaxe
TRIM()
funkci lze použít následovně:
TRIM([remstr FROM] str)
Nebo:
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
Kde str
je řetězec, ze kterého se mají odstranit případné koncové mezery, a remstr
je řetězec k odstranění.
Pokud remstr
není k dispozici, pak TRIM()
odstraní mezery.
Příklad
Zde je základní příklad:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(' Caribbean Island ') AS "Trimmed";
Výsledek:
+------------------------+------------------+| Nestříhaný | Oříznuté |+------------------------+------------------+| Karibský ostrov | Karibský ostrov |+------------------------+------------------+Tento příklad používá nejzákladnější syntaxi. Jediné, co jsme udělali, bylo poskytnout provázek k oříznutí. Nespecifikovali jsme, které znaky se mají oříznout, a tak byly všechny mezery oříznuty z obou stran řetězce.
Můžeme také vidět, že mezera v řetězci zůstává nedotčena.
BOTH
ArgumentVe výchozím nastavení
TRIM()
ořezává obě strany provázku. Můžete však explicitně zadatBOTH
pokud si přejete:SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(BOTH FROM ' Caribbean Island ') AS "Trimmed";
Výsledek:
+------------------------+------------------+| Nestříhaný | Oříznuté |+------------------------+------------------+| Karibský ostrov | Karibský ostrov |+------------------------+------------------+Dostaneme stejný výsledek jako v předchozím příkladu.
LEADING
ArgumentUrčení
LEADING
omezí operaci trimování pouze na začátek řetězce:SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(LEADING FROM ' Caribbean Island ') AS "Trimmed";
Výsledek:
+------------------------+--------------------- +| Nestříhaný | Oříznuto |+------------------------+---------------------+ | Karibský ostrov | Karibský ostrov |+------------------------+--------------------- +Vidíme, že na pravé straně oříznutého řetězce stále existují mezery. Byla oříznuta pouze levá část.
TRAILING
ArgumentUrčení
TRAILING
omezí operaci trimování pouze na začátek řetězce:SELECT ' Caribbean Island ' AS "Untrimmed", TRIM(TRAILING FROM ' Caribbean Island ') AS "Trimmed";
Výsledek:
+------------------------+--------------------- +| Nestříhaný | Oříznuto |+------------------------+---------------------+ | Karibský ostrov | Karibský ostrov |+------------------------+--------------------- +Tentokrát byla oříznuta pouze pravá část. Na levé straně oříznutého řetězce stále existují mezery.
Zadejte řetězec k oříznutí
Zde je příklad určení, který znak se má oříznout:
SELECT '...mountain...' AS "Untrimmed", TRIM('.' FROM '...mountain...') AS "Trimmed";
Výsledek:
+----------------+----------+| Nestříhaný | Ořezaný |+----------------+----------+| ...hora... | hora |+----------------+----------+Nemusí to být jedna postava. Můžete zadat libovolný řetězec k oříznutí:
SELECT TRIM('.' FROM '.+.mountain.+.') AS "1", TRIM('.+' FROM '.+.mountain.+.') AS "2", TRIM('+.' FROM '.+.mountain.+.') AS "3", TRIM('.+.' FROM '.+.mountain.+.') AS "4";
Výsledek:
+--------------+--------------+--------------+- ---------+| 1 | 2 | 3 | 4 |+--------------+--------------+--------------+-- --------+| +.hora.+ | .horský.+. | .+.horský. | hora |+--------------+--------------+--------------+-- --------+Můžete dokonce oříznout část slova, pokud chcete:
SELECT TRIM('moun' FROM 'mountain');
Výsledek:
+------------------------------+| TRIM('moun' FROM 'hora') |+------------------------------+| tain |+------------------------------+Můžeme také použít
BOTH
,LEADING
aTRAILING
argumenty při zadávání řetězce, který se má oříznout.Příklad:
SELECT TRIM(BOTH '.' FROM '...mountain...') AS "Both", TRIM(LEADING '.' FROM '...mountain...') AS "Leading", TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";
Výsledek:
+----------+-------------+-------------+| Oba | Vedoucí | Trailaing |+----------+-------------+-------------+| hora | hora... | ...horský |+----------+-------------+-------------+Nulové argumenty
Pokud je zadáno
null
argument, výsledek jenull
:SELECT TRIM(null);
Výsledek:
+-------------+| TRIM(null) |+------------+| NULL |+------------+Režim Oracle
Když ne běžící v režimu Oracle, pokud je výsledek prázdný (tj. má délku nula), výsledkem je prázdný řetězec.
Při spuštění v režimu Oracle je však výsledkem
null
.Zde je ve výchozím režimu (tj. ne v režimu Oracle):
SELECT TRIM('');
Výsledek:
+-----------+| TRIM('') |+----------+| |+----------+Nyní přejdeme do režimu Oracle:
SET SQL_MODE=ORACLE;
A spusťte kód znovu:
SELECT TRIM('');
Výsledek:
+-----------+| TRIM('') |+----------+| NULL |+----------+Existuje také alternativní způsob, jak to udělat. Místo přepnutí do režimu Oracle můžete použít
TRIM_ORACLE()
jako název funkce.Vraťme se zpět do výchozího režimu:
SET SQL_MODE=DEFAULT;
A nyní spusťte
TRIM_ORACLE()
:SELECT TRIM_ORACLE('');
Výsledek:
+------------------+| TRIM_ORACLE('') |+-----------------+| NULL |+-----------------+Chybí argument
Volání
TRIM()
bez argumentu vede k chybě:SELECT TRIM();
Výsledek:
ERROR 1064 (42000):Máte chybu v syntaxi SQL; zkontrolujte příručku, která odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi, která se má použít poblíž ')' na řádku 1