sql >> Database >  >> RDS >> MariaDB

Hoe MID() werkt in MariaDB

In MariaDB, MID() is een synoniem voor SUBSTRING() . Het retourneert een substring van een gegeven string.

Volgens de MariaDB-documentatie is het een synoniem voor de SUBSTRING(str,pos,len) syntaxis van SUBSTRING() , maar mijn tests tonen aan dat het met alle verschillende vormen werkt.

Syntaxis

Volgens de MariaDB-documentatie gaat de syntaxis als volgt:

MID(str,pos,len)

Ik heb echter ontdekt dat het werkt met de volgende formulieren (dit zijn dezelfde formulieren die SUBSTRING() ondersteunt):

MID(str,pos), 
MID(str FROM pos), 
MID(str,pos,len),
MID(str FROM pos FOR len)

Waar str is de string, pos is de startpositie van de substring, en len is het aantal tekens dat moet worden geëxtraheerd.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT MID('Drink your beer', 7);

Resultaat:

+---------------------------+
| MID('Drink your beer', 7) |
+---------------------------+
| your beer                 |
+---------------------------+

Hier is hetzelfde voorbeeld, maar met de FROM syntaxis:

SELECT MID('Drink your beer' FROM 7);

Resultaat:

+-------------------------------+
| MID('Drink your beer' FROM 7) |
+-------------------------------+
| your beer                     |
+-------------------------------+

Lengte subtekenreeks

Hier is een voorbeeld dat de lengte specificeert van de subtekenreeks die moet worden geëxtraheerd. Dit is de enige syntaxis die de MariaDB-documentatie citeert voor de MID() functie.

SELECT MID('Drink your beer', 7, 4);

Resultaat:

+------------------------------+
| MID('Drink your beer', 7, 4) |
+------------------------------+
| your                         |
+------------------------------+

En hier gebruikt het FROM...FOR syntaxis:

SELECT MID('Drink your beer' FROM 7 FOR 4);

Resultaat:

+-------------------------------------+
| MID('Drink your beer' FROM 7 FOR 4) |
+-------------------------------------+
| your                                |
+-------------------------------------+

Negatieve positie

Door een negatieve waarde voor de positie op te geven, wordt de startpositie teruggeteld vanaf het einde van de tekenreeks:

SELECT MID('Drink your beer', -9);

Resultaat:

+----------------------------+
| MID('Drink your beer', -9) |
+----------------------------+
| your beer                  |
+----------------------------+

Een negatieve positie kan ook worden gebruikt bij het gebruik van de FROM syntaxis:

SELECT MID('Drink your beer' FROM -9 FOR 4);

Resultaat:

+--------------------------------------+
| MID('Drink your beer' FROM -9 FOR 4) |
+--------------------------------------+
| your                                 |
+--------------------------------------+

In dit geval stel ik ook een lengte in voor de substring.

Oracle-modus

In Oracle-modus, een startpositie van 0 (nul) wordt behandeld als 1 . Echter, een startpositie van 1 wordt ook behandeld als 1 .

Dit in tegenstelling tot andere modi, waar 0 zal een lege string teruggeven.

Voorbeeld:

SET SQL_MODE=ORACLE;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Resultaat:

+-----------------+-----------------+
| 0               | 1               |
+-----------------+-----------------+
| Drink your beer | Drink your beer |
+-----------------+-----------------+

Hier is het in de standaardmodus:

SET SQL_MODE=DEFAULT;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Resultaat:

+------+-----------------+
| 0    | 1               |
+------+-----------------+
|      | Drink your beer |
+------+-----------------+

Nullargumenten

Als een (of alle) argumenten null . zijn , de MID() functie retourneert null :

SELECT 
    MID(null, 3, 3),
    MID('Beer', null, 3),
    MID('Beer', 3, null),
    MID(null, null, null);

Resultaat:

+-----------------+----------------------+----------------------+-----------------------+
| MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) |
+-----------------+----------------------+----------------------+-----------------------+
| NULL            | NULL                 | NULL                 | NULL                  |
+-----------------+----------------------+----------------------+-----------------------+

Ontbrekende argumenten

Bellen MID() zonder het doorgeven van argumenten resulteert in een fout:

SELECT MID();

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Wat is MariaDB Enterprise en hoe beheer je het met ClusterControl?

  2. Hoe SELinux te configureren voor PostgreSQL en TimescaleDB

  3. Ondersteunt uw ODBC-stuurprogramma gebruikersgegevensbronnen?

  4. MySQL maximaal geheugengebruik