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'