MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как работи MID() в MariaDB

В MariaDB, MID() е синоним на SUBSTRING() . Връща подниз от даден низ.

Според документацията на MariaDB това е синоним на SUBSTRING(str,pos,len) синтаксис на SUBSTRING() , обаче, моите тестове показват, че работи с всички различни форми.

Синтаксис

Според документацията на MariaDB синтаксисът е така:

MID(str,pos,len)

Открих обаче, че работи със следните формуляри (които са същите форми, които SUBSTRING() поддържа):

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

Където str е низът, pos е началната позиция на подниза и len е броят на знаците за извличане.

Пример

Ето един основен пример:

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

Резултат:

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

Ето същия пример, но с помощта на FROM синтаксис:

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

Резултат:

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

Дължина на подниз

Ето пример, който определя дължината на подниз за извличане. Това е единственият синтаксис, който документацията на MariaDB цитира за MID() функция.

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

Резултат:

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

И тук се използва FROM...FOR синтаксис:

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

Резултат:

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

Отрицателна позиция

Посочването на отрицателна стойност за позицията кара началната позиция да се брои назад от края на низа:

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

Резултат:

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

Отрицателна позиция може да се използва и при използване на FROM синтаксис:

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

Резултат:

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

В този случай задавам и дължина за подниз.

Режим Oracle

Когато сте в режим на Oracle, начална позиция е 0 (нула) се третира като 1 . Въпреки това, начална позиция е 1 също се третира като 1 .

Това е в контраст с други режими, където 0 ще върне празен низ.

Пример:

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

Резултат:

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

Ето го в режим по подразбиране:

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

Резултат:

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

Нулеви аргументи

Ако някой (или всички) от аргументите са null , MID() функцията връща null :

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

Резултат:

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

Липсващи аргументи

Извикване на MID() без подаване на аргументи води до грешка:

SELECT MID();

Резултат:

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. PCI съответствие за MySQL и MariaDB с ClusterControl

  2. Как работи UTC_DATE() в MariaDB

  3. Как да подобрим производителността на репликация в MySQL или MariaDB Galera клъстер

  4. Повишаване на производителността чрез използване на разделяне на четене и запис на трафик от базата данни с Moodle 3.9

  5. Какво е новото в MariaDB 10.6