sql >> Database >  >> RDS >> MariaDB

MariaDB RTRIM() vs RTRIM_ORACLE():wat is het verschil?

MariaDB heeft een RTRIM() functie en een RTRIM_ORACLE() functie. Beide functies doen in wezen hetzelfde. Maar er is een klein verschil.

Het verschil

Het verschil zit in hoe elke functie omgaat met lege strings:

  • RTRIM() verwijdert volgspaties uit een tekenreeks. Wanneer u een lege tekenreeks doorgeeft, hangt het resultaat ervan af of u zich in de Oracle-modus bevindt of niet. Als in Oracle-modus, retourneert het null . Anders retourneert het een lege string.
  • RTRIM_ORACLE() is een synoniem voor de Oracle-modusversie van RTRIM() . Het gedraagt ​​zich als RTRIM() in Oracle-modus (het retourneert null wanneer een lege string wordt doorgegeven), zelfs wanneer niet in Oracle-modus.

Dus RTRIM_ORACLE() werkt precies als RTRIM() in Oracle-modus. Maar wanneer niet in Oracle-modus, is het enige verschil hoe elke functie omgaat met lege strings.

Voorbeeld

Dit kan het beste worden uitgelegd aan de hand van een voorbeeld.

Standaardmodus

Hier is een vergelijking van deze functies in de standaardmodus:

SET SQL_MODE=DEFAULT;
SELECT
    RTRIM(''),
    RTRIM_ORACLE('');

Resultaat:

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

Eerst zette ik mijn systeem in de standaardmodus (ook al was het waarschijnlijk al in de standaardmodus), daarna voerde ik beide functies uit met een lege tekenreeks.

We kunnen zien dat RTRIM() geeft een lege string terug, terwijl RTRIM_ORACLE() retourneert null .

Oracle-modus

Laten we het nu in de Oracle-modus zetten en de code opnieuw uitvoeren:

SET SQL_MODE=ORACLE;
SELECT
    RTRIM(''),
    RTRIM_ORACLE('');

Resultaat:

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

We kunnen zien dat RTRIM() gedraagt ​​zich nu als RTRIM_ORACLE() .

Dus, met RTRIM() , moeten we expliciet overschakelen naar de Oracle-modus voordat we ervoor zorgen dat het zich gedraagt ​​als de Oracle-versie van RTRIM() .

RTRIM_ORACLE() aan de andere kant is het beschikbaar in alle modi, zodat we niet hoeven over te schakelen naar de Oracle-modus.


  1. Minimale logboekregistratie met INSERT...SELECT in heap-tabellen

  2. MySQL match() against() - volgorde op relevantie en kolom?

  3. Hoe praat Access met ODBC-gegevensbronnen? Deel 3

  4. MySQL Lijst met alle procedures