sql >> Databasteknik >  >> RDS >> MariaDB

Hur ELT() fungerar i MariaDB

I MariaDB, ELT() är en inbyggd strängfunktion som accepterar ett numeriskt argument, följt av en serie strängargument. Den returnerar sedan strängen som motsvarar den givna numeriska positionen som tillhandahålls av det första argumentet.

Syntax

Syntaxen ser ut så här:

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

Där N är det numeriska argumentet och str1[, str2, str3,…] representerar strängargumenten.

Exempel

Här är ett grundläggande exempel:

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

Resultat:

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

I det här fallet använde vi 2 för att returnera det andra strängargumentet.

Flytande

Om det första argumentet är en FLOAT , MariaDB avrundar det till närmaste heltal:

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

Resultat:

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

Ange en position utanför räckvidd

Att ange en position utanför intervallet resulterar i null återlämnas. Exempel nedan.

Nollposition

Tillhandahåller 0 som det första argumentet returnerar null :

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

Resultat:

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

Negativ position

Om du anger ett negativt värde som det första argumentet returneras null :

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

Resultat:

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

När positionen är för stor

Om det första argumentet är ett tal som är större än det totala antalet strängargument, ELT() returnerar null:

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

Resultat:

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

Icke-numeriska positioner

Om det första argumentet inte är ett tal, ELT() returnerar null :

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

Resultat:

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

Ge bara ett strängargument

Att tillhandahålla ett enda strängargument är giltigt, även om det första argumentet i det här fallet måste vara 1 för att undvika att få null :

SELECT ELT(1, 'Red');

Resultat:

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

Nullsträngar

Strängargument kan vara null utan att påverka resultatet av de andra:

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

Resultat:

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

Dock, ange ett nummer som matchar null strängargument kommer uppenbarligen att returnera null :

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

Resultat:

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

Ange en nollposition

Tillhandahåller null eftersom det första argumentet resulterar i null :

SELECT ELT(null, 'Red');

Resultat:

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

Enstaka argument

Om du bara anger ett argument returneras ett fel:

SELECT ELT(2);

Resultat:

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

Argument saknas

Anropar ELT() utan att skicka några argument resulterar i ett fel:

SELECT ELT();

Resultat:

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

  1. Varför har vissa kommandon ingen effekt i psql?

  2. Hur kan jag söka i alla kolumner i en tabell?

  3. PHP &MySQL paginering

  4. Ska nya indexkolumner finnas i nyckeln eller inkluderas?