MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa MID() w MariaDB

W MariaDB, MID() jest synonimem SUBSTRING() . Zwraca podciąg z podanego ciągu.

Zgodnie z dokumentacją MariaDB jest to synonim SUBSTRING(str,pos,len) składnia SUBSTRING() , jednak moje testy pokazują, że działa ze wszystkimi różnymi formami.

Składnia

Zgodnie z dokumentacją MariaDB składnia wygląda następująco:

MID(str,pos,len)

Jednak odkryłem, że działa z następującymi formularzami (które są tymi samymi formularzami, co SUBSTRING() obsługuje):

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

Gdzie str jest ciągiem, pos jest pozycją początkową podciągu, a len to liczba znaków do wyodrębnienia.

Przykład

Oto podstawowy przykład:

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

Wynik:

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

Oto ten sam przykład, ale przy użyciu FROM składnia:

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

Wynik:

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

Długość podciągu

Oto przykład określający długość podciągu do wyodrębnienia. Jest to jedyna składnia przytaczana w dokumentacji MariaDB dla MID() funkcja.

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

Wynik:

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

A tutaj używa FROM...FOR składnia:

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

Wynik:

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

Pozycja ujemna

Określenie ujemnej wartości pozycji powoduje, że pozycja początkowa jest liczona wstecz od końca ciągu:

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

Wynik:

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

Pozycja ujemna może być również użyta podczas używania FROM składnia:

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

Wynik:

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

W tym przypadku również ustawiłem długość podłańcucha.

Tryb Oracle

W trybie Oracle pozycja początkowa 0 (zero) jest traktowane jako 1 . Jednak pozycja początkowa 1 jest również traktowany jako 1 .

Jest to w przeciwieństwie do innych trybów, w których 0 zwróci pusty ciąg.

Przykład:

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

Wynik:

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

Oto tryb domyślny:

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

Wynik:

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

Argumenty zerowe

Jeśli którykolwiek (lub wszystkie) argumenty są null , MID() funkcja zwraca null :

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

Wynik:

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

Brakujące argumenty

Wywołanie MID() bez przekazania żadnych argumentów powoduje błąd:

SELECT MID();

Wynik:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_ARRAY_APPEND() Objaśnienie

  2. Migracja bazy danych Azure dla MySQL/MariaDB na serwer lokalny

  3. Tworzenie gorącej gotowości na Amazon AWS przy użyciu klastra MariaDB

  4. Ustaw zestaw znaków i sortowanie tabeli w MariaDB

  5. Bazy danych benchmarkingowych 101 - część 1