sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan LENGTH() virker i MariaDB

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'

  1. Android :Fejl ved kopiering af database (Sqliite) fra aktivmappe

  2. SQLite - Enhver forskel mellem tabel-begrænsning UNIQUE og kolonne-begrænsning UNIQUE?

  3. PDO flere forespørgsler

  4. Brug af SQL Server Profiler | SQL Server Performance Fejlfinding -5