sql >> Databasteknik >  >> RDS >> MariaDB

Skillnaden mellan TRIM() och TRIM_ORACLE() i MariaDB

MariaDB har en TRIM() funktion och en TRIM_ORACLE() fungera. Båda funktionerna gör i princip samma sak. Men det finns en mindre skillnad.

Skillnaden

Skillnaden är hur varje funktion hanterar tomma strängar:

  • TRIM() tar bort tecken från början eller slutet av en sträng. När du passerar en tom sträng kommer resultatet att bero på om du är i Oracle-läge eller inte. Om den är i Oracle-läge returnerar den null . Annars returnerar den en tom sträng.
  • TRIM_ORACLE() är en synonym för Oracle-lägesversionen av TRIM() . Den beter sig som TRIM() i Oracle-läge (det returnerar null när en tom sträng skickas), även när den inte är i Oracle-läge.

Alltså TRIM_ORACLE() fungerar precis som TRIM() i Oracle-läge. Men när den inte är i Oracle-läge är den enda skillnaden hur varje funktion hanterar tomma strängar.

Exempel

Detta förklaras bäst med ett exempel.

Standardläge

Här är en jämförelse av dessa funktioner i standardläge:

SET SQL_MODE=DEFAULT;
SELECT
    TRIM(''),
    TRIM_ORACLE('');

Resultat:

+----------+-----------------+
| TRIM('') | TRIM_ORACLE('') |
+----------+-----------------+
|          | NULL            |
+----------+-----------------+

Först satte jag mitt system till standardläge (även om det förmodligen redan var i standardläge), sedan körde jag båda funktionerna med en tom sträng.

Vi kan se att TRIM() returnerar en tom sträng medan TRIM_ORACLE() returnerar null .

Oracle Mode

Låt oss nu ställa in den till Oracle-läge och köra koden igen:

SET SQL_MODE=ORACLE;
SELECT
    TRIM(''),
    TRIM_ORACLE('');

Resultat:

+----------+-----------------+
| TRIM('') | TRIM_ORACLE('') |
+----------+-----------------+
| NULL     | NULL            |
+----------+-----------------+

Vi kan se att TRIM() beter sig nu som TRIM_ORACLE() .

Så, med TRIM() , måste vi explicit byta till Oracle-läge innan vi får det att bete sig som Oracle-versionen av TRIM() .

TRIM_ORACLE() å andra sidan, är tillgänglig i alla lägen, så det slipper oss från att behöva byta till Oracle-läge.


  1. NLS_CHARSET_NAME() Funktion i Oracle

  2. Hur ändrar man en PG-kolumn till NULLABLE TRUE?

  3. Hur man åtgärdar "ALTER TABLE SWITCH-satsen misslyckades"

  4. Oracle Trigger WHEN Klausulexempel