sql >> Database >  >> RDS >> MariaDB

MariaDB LTRIM() vs LTRIM_ORACLE():wat is het verschil?

MariaDB heeft een LTRIM() functie en een LTRIM_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:

  • LTRIM() verwijdert voorloopspaties uit een string. 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.
  • LTRIM_ORACLE() is een synoniem voor de Oracle-modusversie van LTRIM() . Het gedraagt ​​zich als LTRIM() in Oracle-modus (het retourneert null wanneer een lege string wordt doorgegeven), zelfs wanneer niet in Oracle-modus.

Dus LTRIM_ORACLE() werkt precies als LTRIM() 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
    LTRIM(''),
    LTRIM_ORACLE('');

Resultaat:

+-----------+------------------+
| LTRIM('') | LTRIM_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 LTRIM() geeft een lege string terug, terwijl LTRIM_ORACLE() retourneert null .

Oracle-modus

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

SET SQL_MODE=ORACLE;
SELECT
    LTRIM(''),
    LTRIM_ORACLE('');

Resultaat:

+-----------+------------------+
| LTRIM('') | LTRIM_ORACLE('') |
+-----------+------------------+
| NULL      | NULL             |
+-----------+------------------+

We kunnen zien dat LTRIM() gedraagt ​​zich nu als LTRIM_ORACLE() .

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

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


  1. Geen enkele vorm van databasecaching om dubbele databasequery's te verminderen.

  2. DB-testgegevens genereren

  3. Inzicht in SQL Server ALTER TABLE ADD COLUMN-instructie

  4. Ongeldig parameternummer:parameter is niet gedefinieerd Gegevens invoegen