MariaDB har en LTRIM() funktion og en LTRIM_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:
LTRIM()fjerner indledende mellemrum fra 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.LTRIM_ORACLE()er et synonym for Oracle-tilstandsversionen af LTRIM(). Den opfører sig somLTRIM()i Oracle-tilstand (det returnerernullnår du passerer en tom streng), selv når den ikke er i Oracle-tilstand.
Så LTRIM_ORACLE() fungerer præcis som LTRIM() 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
LTRIM(''),
LTRIM_ORACLE(''); Resultat:
+-----------+------------------+
| LTRIM('') | LTRIM_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 LTRIM() returnerer en tom streng, mens LTRIM_ORACLE() returnerer null .
Oracle Mode
Lad os nu indstille den til Oracle-tilstand og køre koden igen:
SET SQL_MODE=ORACLE;
SELECT
LTRIM(''),
LTRIM_ORACLE(''); Resultat:
+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| NULL | NULL |
+-----------+------------------+
Vi kan se, at LTRIM() opfører sig nu som LTRIM_ORACLE() .
Altså med LTRIM() , skal vi eksplicit skifte til Oracle-tilstand, før vi får den til at opføre sig som Oracle-versionen af LTRIM() .
LTRIM_ORACLE() på den anden side er tilgængelig i alle tilstande, så det sparer os for at skulle skifte til Oracle-tilstand.