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

MariaDB SUBSTR() Обяснено

В MariaDB, SUBSTR() е синоним на SUBSTRING() .

Това е вградена низова функция, която връща подниз от даден низ.

Изисква поне два аргумента; низа и позицията, от която да се извлече поднизът. Той също така приема незадължителен трети аргумент, който ви позволява да укажете колко дълъг трябва да бъде поднизът.

Синтаксис

Синтаксисът приема следните форми:

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

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

Двете формуляри, които използват FROM ключови думи са стандартен SQL синтаксис.

Пример

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

SELECT SUBSTR('Good doggy', 6);

Резултат:

+-------------------------+
| SUBSTR('Good doggy', 6) |
+-------------------------+
| doggy                   |
+-------------------------+

Ето същия пример, но използвайки стандартния SQL синтаксис:

SELECT SUBSTR('Good doggy' FROM 6);

Резултат:

+-----------------------------+
| SUBSTR('Good doggy' FROM 6) |
+-----------------------------+
| doggy                       |
+-----------------------------+

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

Ето пример, който определя дължината на подниз за извличане:

SELECT SUBSTR('Good doggy', 6, 3);

Резултат:

+----------------------------+
| SUBSTR('Good doggy', 6, 3) |
+----------------------------+
| dog                        |
+----------------------------+

И тук използва стандартен SQL синтаксис:

SELECT SUBSTR('Good doggy' FROM 6 FOR 3);

Резултат:

+-----------------------------------+
| SUBSTR('Good doggy' FROM 6 FOR 3) |
+-----------------------------------+
| dog                               |
+-----------------------------------+

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

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

SELECT SUBSTR('Good doggy', -5);

Резултат:

+--------------------------+
| SUBSTR('Good doggy', -5) |
+--------------------------+
| doggy                    |
+--------------------------+

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

SELECT SUBSTR('Good doggy' FROM -5 FOR 3);

Резултат:

+------------------------------------+
| SUBSTR('Good doggy' FROM -5 FOR 3) |
+------------------------------------+
| dog                                |
+------------------------------------+

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

Режим Oracle

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

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

Пример:

SET SQL_MODE=ORACLE;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Резултат:

+------------+------------+
| 0          | 1          |
+------------+------------+
| Good doggy | Good doggy |
+------------+------------+

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

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Резултат:

+------+------------+
| 0    | 1          |
+------+------------+
|      | Good doggy |
+------+------------+

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

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

SELECT 
    SUBSTR(null, 3, 3),
    SUBSTR('Doggy', null, 3),
    SUBSTR('Doggy', 3, null),
    SUBSTR(null, null, null);

Резултат:

+--------------------+--------------------------+--------------------------+--------------------------+
| SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) |
+--------------------+--------------------------+--------------------------+--------------------------+
| NULL               | NULL                     | NULL                     | NULL                     |
+--------------------+--------------------------+--------------------------+--------------------------+

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

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

SELECT SUBSTR();

Резултат:

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. Как MONTHNAME() работи в MariaDB

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

  3. Cloud Disaster Recovery за MariaDB и MySQL

  4. Как да инсталирате и защитите MariaDB на CentOS 7

  5. Управление на потребителите на база данни:Управляващи роли за MariaDB