sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB RTRIM() vs RTRIM_ORACLE():Vad är skillnaden?

MariaDB har en RTRIM() funktion och en RTRIM_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:

  • RTRIM() tar bort efterföljande mellanslag från 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.
  • RTRIM_ORACLE() är en synonym för Oracle-lägesversionen av RTRIM() . Den beter sig som RTRIM() 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å RTRIM_ORACLE() fungerar precis som RTRIM() 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
    RTRIM(''),
    RTRIM_ORACLE('');

Resultat:

+-----------+------------------+
| RTRIM('') | RTRIM_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 RTRIM() returnerar en tom sträng medan RTRIM_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
    RTRIM(''),
    RTRIM_ORACLE('');

Resultat:

+-----------+------------------+
| RTRIM('') | RTRIM_ORACLE('') |
+-----------+------------------+
| NULL      | NULL             |
+-----------+------------------+

Vi kan se att RTRIM() beter sig nu som RTRIM_ORACLE() .

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

RTRIM_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. java.lang.IllegalStateException:Det gick inte att läsa rad 0, kol -1 från CursorWindow - Android sqlite problem

  2. Tips för att leverera MySQL-databasprestanda - del två

  3. Kombinera SQLite Count() med GROUP BY för att lägga till en "Count"-kolumn till din resultatuppsättning

  4. Kontrollera om en sträng innehåller en delsträng i SQL Server 2005, med hjälp av en lagrad procedur