sql >> Databáze >  >> RDS >> MariaDB

Jak ELT() funguje v MariaDB

V MariaDB, ELT() je vestavěná řetězcová funkce, která přijímá číselný argument následovaný řadou řetězcových argumentů. Poté vrátí řetězec, který odpovídá dané číselné pozici poskytnuté prvním argumentem.

Syntaxe

Syntaxe vypadá takto:

ELT(N, str1[, str2, str3,...])

Kde N je číselný argument a str1[, str2, str3,…] představuje argumenty řetězce.

Příklad

Zde je základní příklad:

SELECT ELT(2, 'Red', 'Green', 'Blue');

Výsledek:

+--------------------------------+
| ELT(2, 'Red', 'Green', 'Blue') |
+--------------------------------+
| Green                          |
+--------------------------------+

V tomto případě jsme použili 2 vrátit argument druhého řetězce.

Plováky

Pokud je prvním argumentem FLOAT , MariaDB jej zaokrouhlí na nejbližší celé číslo:

SELECT 
    ELT(2.4, 'Red', 'Green', 'Blue') AS "2.4",
    ELT(2.5, 'Red', 'Green', 'Blue') AS "2.5";

Výsledek:

+-------+------+
| 2.4   | 2.5  |
+-------+------+
| Green | Blue |
+-------+------+

Určení polohy mimo rozsah

Zadání pozice mimo rozsah má za následek null vracení. Příklady níže.

Pozice nula

Poskytování 0 jako první argument vrací null :

SELECT ELT(0, 'Red', 'Green', 'Blue');

Výsledek:

+--------------------------------+
| ELT(0, 'Red', 'Green', 'Blue') |
+--------------------------------+
| NULL                           |
+--------------------------------+

Záporná pozice

Zadání záporné hodnoty jako prvního argumentu vrátí null :

SELECT ELT(-2, 'Red', 'Green', 'Blue');

Výsledek:

+---------------------------------+
| ELT(-2, 'Red', 'Green', 'Blue') |
+---------------------------------+
| NULL                            |
+---------------------------------+

Když je pozice příliš velká

Pokud je prvním argumentem číslo, které je větší než celkový počet argumentů řetězce, ELT() vrátí hodnotu null:

SELECT ELT(20, 'Red', 'Green', 'Blue');

Výsledek:

+---------------------------------+
| ELT(20, 'Red', 'Green', 'Blue') |
+---------------------------------+
| NULL                            |
+---------------------------------+

Nečíselné pozice

Pokud první argument není číslo, ELT() vrátí null :

SELECT ELT('Two', 'Red', 'Green', 'Blue');

Výsledek:

+------------------------------------+
| ELT('Two', 'Red', 'Green', 'Blue') |
+------------------------------------+
| NULL                               |
+------------------------------------+

Poskytování pouze jednoho řetězcového argumentu

Zadání jediného řetězcového argumentu je platné, i když v tomto případě by první argument musel být 1 abyste se vyhnuli zobrazení null :

SELECT ELT(1, 'Red');

Výsledek:

+---------------+
| ELT(1, 'Red') |
+---------------+
| Red           |
+---------------+

Nulové řetězce

Argumenty řetězce mohou být null aniž by to ovlivnilo výsledek ostatních:

SELECT ELT(3, 'Red', null, 'Blue');

Výsledek:

+-----------------------------+
| ELT(3, 'Red', null, 'Blue') |
+-----------------------------+
| Blue                        |
+-----------------------------+

I když, zadáním čísla, které odpovídá null string argument zjevně vrátí null :

SELECT ELT(2, 'Red', null, 'Blue');

Výsledek:

+-----------------------------+
| ELT(2, 'Red', null, 'Blue') |
+-----------------------------+
| NULL                        |
+-----------------------------+

Určení nulové pozice

Poskytování null jako první argument je výsledkem null :

SELECT ELT(null, 'Red');

Výsledek:

+------------------+
| ELT(null, 'Red') |
+------------------+
| NULL             |
+------------------+

Jeden argument

Zadání pouze jednoho argumentu vrátí chybu:

SELECT ELT(2);

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ELT'

Chybí argument

Volání ELT() bez předání jakýchkoli argumentů dojde k chybě:

SELECT ELT();

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ELT'

  1. Přístup ODBC z Windows Server Core

  2. Spouštěcí vs. kontrolní omezení

  3. Tři výhry výkonu Easy SQL Server

  4. Proč nemohu použít proměnné vazby v příkazech DDL/SCL v dynamickém SQL?