sql >> Databáze >  >> RDS >> Oracle

Funkce LTRIM() v Oracle

V Oracle je to LTRIM() funkce umožňuje oříznout levou část řetězce. Ve výchozím nastavení ořízne prázdné místo, ale volitelně můžete zadat jiný znak nebo znaky, které chcete oříznout.

Syntaxe

Syntaxe vypadá takto:

LTRIM(char [, set ]) 

Kde char a set může být libovolný z datových typů CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB nebo NCLOB .

LTRIM odstraní z levého konce char všechny znaky obsažené v set . Pokud nezadáte set , pak se jako výchozí použije jedna mezera.

Příklad

Zde je jednoduchý příklad k demonstraci:

SELECT LTRIM('     Cat')
FROM DUAL; 

Výsledek:

 LTRIM('CAT') _______________ Kočka 

V tomto případě jsem nespecifikoval, které znaky se mají oříznout, a tak byl každý jednotlivý prázdný znak oříznut z levé části řetězce.

Zde je to opět při srovnání s původním (nevycpaným) řetězcem:

SELECT '     Cat'
FROM DUAL
UNION ALL
SELECT LTRIM('     Cat')
FROM DUAL; 

Výsledek:

 'CAT' ___________ Cat Cat 

Zadejte znak

V tomto příkladu specifikuji znak, který se má oříznout:

SELECT LTRIM('...Cat...', '.')
FROM DUAL; 

Výsledek:

 LTRIM('...CAT...','.') __________________________ Cat... 

Takže můžeme vidět, že postava byla oříznuta z levé strany, ale ne z pravé strany. Chcete-li oříznout pravou stranu, použijte RTRIM() nebo TRIM() .

Všimněte si, že LTRIM() pouze ořízne postavu/y v sadě, dokud se neobjeví postava, která v sadě není. Zde je příklad toho, co mám na mysli:

SELECT LTRIM('...A...Cat', '.')
FROM DUAL; 

Výsledek:

 LTRIM('...A...CAT','.') __________________________ A...Cat 

Pokud však zahrneme A v sadě, pak dostaneme jiný výsledek:

SELECT LTRIM('...A...Cat', '.A')
FROM DUAL; 

Výsledek:

 LTRIM('...A...CAT','.A') ____________________________ Kočka 

Příklad databáze

Zde je příklad oříznutí levé části hodnot ve sloupci databáze:

SELECT 
    country_name,
    LTRIM(country_name, 'Ar') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY; 

Výsledek:

 COUNTRY_NAME STŘIŽENO _______________ ___________ Argentina gentina Austrálie Austrálie Belgie Belgie Brazílie Brazílie Kanada Kanada 

Nulové hodnoty

Pokud je některý z argumentů null výsledkem je null :

SET NULL 'null';

SELECT 
    LTRIM(null, 3),
    LTRIM(' Cat', null),
    LTRIM(null, null)
FROM DUAL; 

Výsledek:

 LTRIM(NULL;3) LTRIM('CAT',NULL) LTRIM(NULL,NULL) ________________ _____________________ ___________________ null 

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Oříznutí prázdných řetězců

Předání prázdného řetězce jako druhého argumentu má za následek null :

SET NULL 'null';

SELECT LTRIM('   Cat', '')
FROM DUAL; 

Výsledek:

 LTRIM('CAT','') __________________ null 

Přidání jediné mezery k prázdnému řetězci to však změní a ořízne všechna prázdná místa zleva od řetězce:

SELECT LTRIM('   Cat', ' ')
FROM DUAL; 

Výsledek:

 LTRIM('CAT','') __________________ Kočka 

Nesprávný počet argumentů

Volání LTRIM() bez předání jakýchkoli argumentů vrátí chybu:

SELECT LTRIM()
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT LTRIM()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00938:nedostatek argumentů pro funkci00938. 00000 - "nedostatek argumentů pro funkci"*Příčina:*Akce:

A předání nesprávného počtu argumentů má za následek chybu:

SELECT LTRIM('Cat', 1, '>')
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT LTRIM('Cat', 1, '>')FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00939:příliš mnoho argumentů pro funkci00939. 00000 - "příliš mnoho argumentů pro funkci"*Příčina:*Akce:

  1. Přečtěte si o tom, jak používat SQL Server Management Studio

  2. Nelze se připojit k postgresovému serveru v dockeru z dockerizované aplikace

  3. org.hibernate.internal.util.config.ConfigurationException:Nelze najít zdroj cfg.xml [/HibernateTest/src/hibernate.cfg.xml]

  4. Jsou příkazy CASE a DECODE ekvivalentní?