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: