sql >> Database teknologi >  >> RDS >> Oracle

LTRIM() Funktion i Oracle

I Oracle er LTRIM() funktionen giver dig mulighed for at trimme den venstre del af en streng. Som standard trimmer det hvidt mellemrum, men du kan valgfrit angive et eller flere andre tegn, der skal trimmes.

Syntaks

Syntaksen ser sådan ud:

LTRIM(char [, set ])

Hvor char og set kan være enhver af datatyperne CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB eller NCLOB .

LTRIM fjerner fra venstre ende af char alle tegn indeholdt i set . Hvis du ikke angiver set , så er det som standard et enkelt tomt.

Eksempel

Her er et simpelt eksempel til at demonstrere:

SELECT LTRIM('     Cat')
FROM DUAL;

Resultat:

   LTRIM('CAT') 
_______________ 
Cat            

I dette tilfælde specificerede jeg ikke hvilke tegn, der skulle trimmes, og så hver enkelt blank blev trimmet fra den venstre del af strengen.

Her er den igen sammenlignet med den originale (ikke-polstrede) streng:

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

Resultat:

      'CAT' 
___________ 
     Cat    
Cat        

Angiv et tegn

I dette eksempel angiver jeg et tegn, der skal trimmes:

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

Resultat:

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

Så vi kan se, at karakteren blev trimmet fra venstre side, men ikke højre side. For at trimme højre side, brug RTRIM() eller TRIM() .

Bemærk at LTRIM() trimmer kun karakteren/erne i sættet, indtil der er en karakter, der ikke er i sættet. Her er et eksempel på, hvad jeg mener:

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

Resultat:

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

Men hvis vi inkluderer A i sættet, så får vi et andet resultat:

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

Resultat:

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

Databaseeksempel

Her er et eksempel på trimning af den venstre del af værdierne i en databasekolonne:

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

Resultat:

   COUNTRY_NAME     TRIMMED 
_______________ ___________ 
Argentina       gentina     
Australia       ustralia    
Belgium         Belgium     
Brazil          Brazil      
Canada          Canada     

Nul-værdier

Hvis nogen af ​​argumenterne er null resultatet er null :

SET NULL 'null';

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

Resultat:

   LTRIM(NULL,3)    LTRIM('CAT',NULL)    LTRIM(NULL,NULL) 
________________ ____________________ ___________________ 
null             null                 null               

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Trimning af tomme strenge

At sende en tom streng som det andet argument resulterer i null :

SET NULL 'null';

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

Resultat:

   LTRIM('CAT','') 
__________________ 
null              

Men tilføjelse af et enkelt mellemrum til den tomme streng ændrer det, og trimmer eventuelle tomme mellemrum fra venstre for strengen:

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

Resultat:

   LTRIM('CAT','') 
__________________ 
Cat               

Forkert antal argumenter

Kalder LTRIM() uden at sende nogen argumenter returnerer en fejl:

SELECT LTRIM()
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT LTRIM()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Og at sende det forkerte antal argumenter resulterer i en fejl:

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

Resultat:

Error starting at line : 1 in command -
SELECT LTRIM('Cat', 1, '>')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Hvordan kan du repræsentere arv i en database?

  2. Har mysql det, der svarer til Oracles analytiske funktioner?

  3. Sådan opdaterer du en kolonne baseret på en anden kolonne i SQL

  4. Hvad er den bedste måde at gemme koordinater (længde/breddegrad, fra Google Maps) i SQL Server?