I Oracle, TRIM()
funktionen låter dig trimma tecken från sidorna av en sträng.
Du kan trimma inledande karaktärer, efterföljande karaktärer eller båda.
Som standard trimmar det vitt utrymme, men du kan valfritt ange ett eller flera olika tecken att trimma.
Syntax
Syntaxen ser ut så här:
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
Båda trim_character
och trim_source
kan vara VARCHAR2
eller någon datatyp som implicit kan konverteras till VARCHAR2
.
Exempel
Här är ett enkelt exempel att visa:
SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;
Resultat:
TRIM('.'FROM'...CAT...') ___________________________ Cat
I det här fallet, det angivna tecknet (.
) togs bort från båda sidor av strängen.
Den togs bort från båda sidor eftersom jag inte angav vilken sida jag skulle ta bort den från.
Vi kan få samma resultat genom att inkludera BOTH
nyckelord:
SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;
Resultat:
TRIM(BOTH'.'FROM'...CAT...') _______________________________ Cat
Trimma ledande karaktärer
Här är den igen, men med endast ledande karaktärer borttagna:
SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;
Resultat:
TRIM(LEADING'.'FROM'...CAT...') __________________________________ Cat...
Trimma efterföljande tecken
Och här är den med endast efterföljande tecken borttagna:
SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;
Resultat:
TRIM(TRAILING'.'FROM'...CAT...') ___________________________________ ...Cat
Standardtecken
I det här exemplet anger jag inte tecken som ska trimmas, därför trimmar det tomt utrymme:
SELECT TRIM(' Cat ')
FROM DUAL;
Resultat:
TRIM('CAT') ______________ Cat
Det är inte så lätt att se effekten när du trimmar blanksteg från båda sidor.
Här är ett annat exempel som gör det lättare att se att det vita utrymmet togs bort från båda sidor:
SELECT
'My' || ' Fat ' || 'Cat',
'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;
Resultat:
'MY'||'FAT'||'CAT' 'MY'||TRIM('FAT')||'CAT' _____________________ ___________________________ My Fat Cat MyFatCat
Siffror
Strängen och trimtecken kan vara VARCHAR2
eller någon datatyp som implicit kan konverteras till VARCHAR2
, så vi kan skicka ett nummer som följande. Returvärdet är dock VARCHAR2
.
SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;
Resultat:
TRIM(LEADING0FROM007) ________________________ 7
Här är det med ett annat nummer som trimmas:
SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;
Resultat:
TRIM(LEADING1FROM117) ________________________ 7
Nullvärden
Om antingen strängen eller beskärningstecknet är null
resultatet är null
:
SET NULL 'null';
SELECT
TRIM(null FROM '...Cat...'),
TRIM(BOTH FROM null),
TRIM(null FROM null)
FROM DUAL;
Resultat:
TRIM(NULLFROM'...CAT...') TRIM(BOTHFROMNULL) TRIM(NULLFROMNULL) ____________________________ _____________________ _____________________ null null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Trimmar tomma strängar
Att skicka en tom sträng som trimma tecken resulterar i null
:
SET NULL 'null';
SELECT TRIM('' FROM ' Cat')
FROM DUAL;
Resultat:
TRIM(''FROM'CAT') ____________________ null
Men att lägga till ett enstaka mellanslag i den tomma strängen ändrar det och trimmar alla tomma mellanslag från strängen:
SET NULL 'null';
SELECT TRIM(' ' FROM ' Cat')
FROM DUAL;
Resultat:
TRIM(''FROM'CAT') ____________________ Cat
Inkorrekt antal argument
Anropar TRIM()
utan att skicka några argument returnerar ett fel:
SELECT TRIM()
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT TRIM() FROM DUAL Error at Command Line : 1 Column : 13 Error report - SQL Error: ORA-00936: missing expression 00936. 00000 - "missing expression" *Cause: *Action:
Och att skicka fel antal argument resulterar i ett fel:
SELECT TRIM(' Cat ', 2)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT TRIM(' Cat ', 2) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis" *Cause: *Action:
Se även RTRIM()
och LTRIM()
för mer riktade funktioner för att trimma varje sida av en sträng. Dessa funktioner låter dig också trimma flera tecken från strängen.