I MariaDB, CHARACTER_LENGTH()
är en inbyggd strängfunktion som returnerar längden på det givna strängargumentet, mätt i tecken.
CHARACTER_LENGTH()
är faktiskt en synonym för CHAR_LENGTH()
, så att du kan använda antingen.
Syntax
Syntaxen ser ut så här:
CHARACTER_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 CHARACTER_LENGTH('Cat');
Resultat:
+------------------------+| CHARACTER_LENGTH('Katt') |+-------------------------+| 3 |+-------------------------+
I det här fallet var strängen tre tecken lång, så vi fick 3
.
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 CHARACTER_LENGTH(1234);
Resultat:
+------------------------+| CHARACTER_LENGTH(1234) |+------------------------+| 4 |+------------------------+
Jämförelse med CHAR_LENGTH()
Som nämnts, CHARACTER_LENGTH()
är en synonym för CHAR_LENGTH()
. Här är det i jämförelse med CHAR_LENGTH()
:
SELECT
CHARACTER_LENGTH(1234),
CHAR_LENGTH(1234);
Resultat:
+------------------------+------------------------+| CHARACTER_LENGTH(1234) | CHAR_LENGTH(1234) |+------------------------+------------------------ +| 4 | 4 |+------------------------+------------------------+Multi-Byte-tecken
CHARACTER_LENGTH()
Funktionen räknar varje tecken som ett enda tecken, oavsett hur många byte den använder. Därför kommer tecken som använder två, tre eller till och med fyra byte fortfarande att räknas som ett tecken.Detta till skillnad från funktioner som
LENGTH()
, som returnerar antalet byte (såvida det inte är i Oracle-läge, i vilket fall det gör samma sak somCHARACTER_LENGTH()
– returnerar antalet tecken). Det är också i motsats till funktioner somBIT_LENGTH()
som returnerar antalet bitar i en sträng.Här är ett exempel som jämför dessa funktioner:
SELECT CHARACTER_LENGTH('อ'), LENGTH('อ'), BIT_LENGTH('อ');
Resultat:
+------------------------+--------------+---- ---------------+| CHARACTER_LENGTH('อ') | LENGTH('อ') | BIT_LENGTH('อ') |+------------------------+--------------------+ ------------------+| 1 | 3 | 24 |+-------------------------+---------------- --------------+Detta thailändska tecken (
อ
) använder 3 byte.CHARACTER_LENGTH()
returnerar 1, eftersom det fortfarande bara är ett enda tecken.LENGTH()
ochBIT_LENGTH()
å andra sidan, returnera antalet byte respektive bitar.Det här exemplet gjordes med standard
SQL_MODE
. Som nämnts, om den hade varit i Oracle-läge,LENGTH()
skulle ha betett sig somCHARACTER_LENGTH()
och returnerade1
.Nollargument
Skickar
null
returnerarnull
:SELECT CHARACTER_LENGTH(null);
Resultat:
+------------------------+| CHARACTER_LENGTH(null) |+------------------------+| NULL |+------------------------+Argument saknas
Anropar
CHARACTER_LENGTH()
utan att skicka ett argument resulterar det i ett fel:SELECT CHARACTER_LENGTH();
Resultat:
ERROR 1582 (42000):Fel parameterantal i anropet till den ursprungliga funktionen 'CHARACTER_LENGTH'