I MariaDB, LENGTH()
er en indbygget strengfunktion, der returnerer længden af det givne strengargument.
Når den er i standardtilstand, måles længden af strengen i bytes. Men når den er i Oracle-tilstand, måles den i tegn.
Syntaks
Syntaksen ser sådan ud:
LENGTH(str)
Hvor str
er den streng, som længden vil blive returneret for.
Eksempel
Her er et grundlæggende eksempel:
SELECT LENGTH('café');
Resultat:
+-----------------+ | LENGTH('café') | +-----------------+ | 5 | +-----------------+
I dette tilfælde var strengen fire tegn lang, men LENGTH()
returnerede 5
.
Dette skyldes, at det sidste tegn bruger to bytes, og jeg bruger standard SQL-tilstand (min sql_mode=DEFAULT
). Når du er i standard SQL-tilstand, LENGTH()
returnerer antallet af bytes.
Oracle-tilstand
Skift til Oracle-tilstand resulterer i LENGTH()
returnerer kun antallet af tegn i strengen (i modsætning til antallet af bytes).
Lad os skifte vores session til Oracle-tilstand:
SET SESSION sql_mode='ORACLE';
Og lad os nu køre den forrige LENGTH()
eksempel igen:
SELECT LENGTH('café');
Resultat:
+-----------------+ | LENGTH('café') | +-----------------+ | 4 | +-----------------+
Denne gang returnerer den antallet af tegn (4) i stedet for antallet af bytes (5).
Når du er i Oracle-tilstand, LENGTH()
returnerer det samme resultat som CHAR_LENGTH()
og dets synonym, CHARACTER_LENGTH()
.
Sammenligning med CHAR_LENGTH()
og BIT_LENGTH()
Lad os skifte tilbage til standardtilstand:
SET SESSION sql_mode=DEFAULT;
Her er en hurtig sammenligning mellem LENGTH()
i standardtilstand, CHAR_LENGTH()
og BIT_LENGTH()
som returnerer antallet af bits i en streng:
SELECT
LENGTH('อ'),
CHAR_LENGTH('อ'),
BIT_LENGTH('อ');
Resultat:
+---------------+--------------------+-------------------+ | LENGTH('อ') | CHAR_LENGTH('อ') | BIT_LENGTH('อ') | +---------------+--------------------+-------------------+ | 3 | 1 | 24 | +---------------+--------------------+-------------------+
Dette thailandske tegn (อ
) bruger 3 bytes, og derfor LENGTH()
returnerer 3
.
CHAR_LENGTH()
returnerer 1
, fordi det stadig kun er et enkelt tegn og BIT_LENGTH()
returnerer antallet af bit (24
).
Igen, hvis vi havde været i Oracle-tilstand, LENGTH()
ville have returneret det samme som CHAR_LENGTH()
.
Ikke-strenge
Hvis argumentet ikke er en streng, konverteres det til en streng.
Her er et andet eksempel, der bruger et tal:
SELECT LENGTH(1234);
Resultat:
+--------------+ | LENGTH(1234) | +--------------+ | 4 | +--------------+
Nul-argumenter
Sender null
returnerer null
:
SELECT LENGTH(null);
Resultat:
+--------------+ | LENGTH(null) | +--------------+ | NULL | +--------------+
Manglende argument
Kalder LENGTH()
uden at sende et argument resulterer i en fejl:
SELECT LENGTH();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'