sql >> Databasteknik >  >> RDS >> MariaDB

Hur OCTET_LENGTH() fungerar i MariaDB

I MariaDB, OCTET_LENGTH() är en inbyggd strängfunktion som returnerar längden på det givna strängargumentet, mätt i oktetter (byte).

OCTET_LENGTH() är en synonym för LENGTHB() .

Det är också en synonym för LENGTH() när den inte är i Oracle-läge (LENGTH() beter sig annorlunda i Oracle-läge).

Syntax

Syntaxen ser ut så här:

OCTET_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 OCTET_LENGTH('café');

Resultat:

+-----------------------+
| OCTET_LENGTH('café')  |
+-----------------------+
|                     5 |
+-----------------------+

I det här fallet var strängen fyra tecken lång, men OCTET_LENGTH() returnerade 5 . Detta beror på att det sista tecknet använder två oktetter/byte.

Jämförelse med CHAR_LENGTH() och BIT_LENGTH()

Här är en snabb jämförelse mellan OCTET_LENGTH() , CHAR_LENGTH() (som returnerar antalet tecken i strängen) och BIT_LENGTH() (som returnerar antalet bitar i strängen):

SELECT 
    OCTET_LENGTH('อ'),
    CHAR_LENGTH('อ'),
    BIT_LENGTH('อ');

Resultat:

+---------------------+--------------------+-------------------+
| OCTET_LENGTH('อ')   | CHAR_LENGTH('อ')   | BIT_LENGTH('อ')   |
+---------------------+--------------------+-------------------+
|                   3 |                  1 |                24 |
+---------------------+--------------------+-------------------+

Detta thailändska tecken ( ) använder 3 byte, och därför OCTET_LENGTH() returnerar 3 .

CHAR_LENGTH() returnerar antalet tecken (1 ), och BIT_LENGTH() returnerar antalet bitar (24 ).

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 OCTET_LENGTH(1234);

Resultat:

+--------------------+
| OCTET_LENGTH(1234) |
+--------------------+
|                  4 |
+--------------------+

Nollargument

Skickar null returnerar null :

SELECT OCTET_LENGTH(null);

Resultat:

+--------------------+
| OCTET_LENGTH(null) |
+--------------------+
|               NULL |
+--------------------+

Argument saknas

Anropar OCTET_LENGTH() utan att skicka ett argument resulterar det i ett fel:

SELECT OCTET_LENGTH();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'OCTET_LENGTH'

  1. Åtgärda "Aritmetiskt spillfel vid konvertering av IDENTITY till datatyp..." i SQL Server

  2. Kapslade klasser - CustomRowMapper !! Inget problem längre!! - Del 1

  3. Ansluta till Docker MySQL-behållare från localhost?

  4. Kontrollera om sekvensen finns i Postgres (plpgsql)