MariaDB har en TRIM()
funktion og en TRIM_ORACLE()
fungere. Begge funktioner gør stort set det samme. Men der er en mindre forskel.
Forskellen
Forskellen er, hvordan hver funktion håndterer tomme strenge:
TRIM()
fjerner tegn fra starten eller slutningen af en streng. Når du passerer en tom streng, vil resultatet afhænge af, om du er i Oracle-tilstand eller ej. Hvis den er i Oracle-tilstand, returnerer dennull
. Ellers returnerer den en tom streng.TRIM_ORACLE()
er et synonym for Oracle-tilstandsversionen af TRIM()
. Den opfører sig somTRIM()
i Oracle-tilstand (det returnerernull
når du passerer en tom streng), selv når den ikke er i Oracle-tilstand.
Så TRIM_ORACLE()
fungerer nøjagtigt som TRIM()
i Oracle-tilstand. Men når den ikke er i Oracle-tilstand, er den eneste forskel, hvordan hver funktion håndterer tomme strenge.
Eksempel
Dette forklares bedst med et eksempel.
Standardtilstand
Her er en sammenligning af disse funktioner i standardtilstand:
SET SQL_MODE=DEFAULT;
SELECT
TRIM(''),
TRIM_ORACLE('');
Resultat:
+----------+-----------------+ | TRIM('') | TRIM_ORACLE('') | +----------+-----------------+ | | NULL | +----------+-----------------+
Først satte jeg mit system til standardtilstand (selvom det sandsynligvis allerede var i standardtilstand), så kørte jeg begge funktioner med en tom streng.
Vi kan se at TRIM()
returnerer en tom streng, mens TRIM_ORACLE()
returnerer null
.
Oracle Mode
Lad os nu indstille den til Oracle-tilstand og køre koden igen:
SET SQL_MODE=ORACLE;
SELECT
TRIM(''),
TRIM_ORACLE('');
Resultat:
+----------+-----------------+ | TRIM('') | TRIM_ORACLE('') | +----------+-----------------+ | NULL | NULL | +----------+-----------------+
Vi kan se at TRIM()
opfører sig nu som TRIM_ORACLE()
.
Altså med TRIM()
, skal vi eksplicit skifte til Oracle-tilstand, før vi får den til at opføre sig som Oracle-versionen af TRIM()
.
TRIM_ORACLE()
på den anden side er tilgængelig i alle tilstande, så det sparer os for at skulle skifte til Oracle-tilstand.