I MariaDB, LENGTH() är en inbyggd strängfunktion som returnerar längden på det givna strängargumentet.
I standardläge mäts längden på strängen i byte. Men i Oracle-läge mäts det i tecken.
Syntax
Syntaxen ser ut så här:
LENGTH(str)
Där str är strängen för vilken längden kommer att returneras.
Exempel
Här är ett grundläggande exempel:
SELECT LENGTH('café'); Resultat:
+-----------------+
| LENGTH('café') |
+-----------------+
| 5 |
+-----------------+
I det här fallet var strängen fyra tecken lång, men LENGTH() returnerade 5 .
Detta beror på att det sista tecknet använder två byte, och jag använder standard SQL-läge (min sql_mode=DEFAULT ). I standardläge för SQL, LENGTH() returnerar antalet byte.
Oracle Mode
Att byta till Oracle-läge resulterar i LENGTH() returnerar bara antalet tecken i strängen (i motsats till antalet byte).
Låt oss byta vår session till Oracle-läge:
SET SESSION sql_mode='ORACLE';
Och låt oss nu köra föregående LENGTH() exempel igen:
SELECT LENGTH('café'); Resultat:
+-----------------+
| LENGTH('café') |
+-----------------+
| 4 |
+-----------------+ Den här gången returnerar den antalet tecken (4) istället för antalet byte (5).
I Oracle-läge, LENGTH() returnerar samma resultat som CHAR_LENGTH() och dess synonym, CHARACTER_LENGTH() .
Jämförelse med CHAR_LENGTH() och BIT_LENGTH()
Låt oss växla tillbaka till standardläget:
SET SESSION sql_mode=DEFAULT;
Här är en snabb jämförelse mellan LENGTH() i standardläge, CHAR_LENGTH() och BIT_LENGTH() som returnerar antalet bitar i en sträng:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ'); Resultat:
+---------------+--------------------+-------------------+
| LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') |
+---------------+--------------------+-------------------+
| 3 | 1 | 24 |
+---------------+--------------------+-------------------+
Detta thailändska tecken (อ ) använder 3 byte, och därför LENGTH() returnerar 3 .
CHAR_LENGTH() returnerar 1 , eftersom det fortfarande bara är ett enda tecken och BIT_LENGTH() returnerar antalet bitar (24 ).
Återigen, om vi hade varit i Oracle-läge, LENGTH() skulle ha returnerat samma som CHAR_LENGTH() .
Icke-strängar
Om argumentet inte är en sträng, konverteras det till en sträng.
Här är ett annat exempel som använder ett nummer:
SELECT LENGTH(1234); Resultat:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Nollargument
Skickar null returnerar null :
SELECT LENGTH(null); Resultat:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Argument saknas
Anropar LENGTH() utan att skicka ett argument resulterar det i ett fel:
SELECT LENGTH(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'