sql >> Databáze >  >> RDS >> MariaDB

Jak TRIM() funguje v MariaDB

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 Argument

Ve výchozím nastavení TRIM() ořezává obě strany provázku. Můžete však explicitně zadat BOTH 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 Argument

Urč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 Argument

Urč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 a TRAILING 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 je null :

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

  1. Jak používat Top with Ties v SQL Server - SQL Server / TSQL výukový program, část 114

  2. Jak používat Partition By nebo Max?

  3. SQL SERVER 2016 – Porovnání plánů provádění

  4. Jak vytvořit vnořenou tabulku pomocí uživatelsky definovaného datového typu v databázi Oracle