sql >> Database >  >> RDS >> MariaDB

Hoe LENGTH() werkt in MariaDB

In MariaDB, LENGTH() is een ingebouwde tekenreeksfunctie die de lengte van het gegeven tekenreeksargument retourneert.

In de standaardmodus wordt de lengte van de string gemeten in bytes. Maar in Oracle-modus wordt het gemeten in tekens.

Syntaxis

De syntaxis gaat als volgt:

LENGTH(str)

Waar str is de tekenreeks waarvoor de lengte wordt geretourneerd.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT LENGTH('café');

Resultaat:

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

In dit geval was de tekenreeks vier tekens lang, maar LENGTH() 5 geretourneerd .

Dit komt omdat het laatste teken twee bytes gebruikt en ik de standaard SQL-modus gebruik (mijn sql_mode=DEFAULT ). In de standaard SQL-modus, LENGTH() geeft het aantal bytes terug.

Oracle-modus

Overschakelen naar Oracle-modus resulteert in LENGTH() geeft alleen het aantal tekens in de tekenreeks terug (in tegenstelling tot het aantal bytes).

Laten we onze sessie overschakelen naar Oracle-modus:

SET SESSION sql_mode='ORACLE';

En laten we nu de vorige LENGTH() . uitvoeren voorbeeld nogmaals:

SELECT LENGTH('café');

Resultaat:

+-----------------+
| LENGTH('café')  |
+-----------------+
|               4 |
+-----------------+

Deze keer retourneert het het aantal tekens (4) in plaats van het aantal bytes (5).

In Oracle-modus, LENGTH() geeft hetzelfde resultaat als CHAR_LENGTH() en zijn synoniem, CHARACTER_LENGTH() .

Vergelijking met CHAR_LENGTH() en BIT_LENGTH()

Laten we teruggaan naar de standaardmodus:

SET SESSION sql_mode=DEFAULT;

Hier is een snelle vergelijking tussen LENGTH() in de standaardmodus, CHAR_LENGTH() en BIT_LENGTH() die het aantal bits in een string teruggeeft:

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

Resultaat:

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

Dit Thaise karakter ( ) gebruikt 3 bytes, en daarom LENGTH() retourneert 3 .

CHAR_LENGTH() retourneert 1 , omdat het nog steeds maar een enkel teken is, en BIT_LENGTH() geeft het aantal bits terug (24 ).

Nogmaals, als we in Oracle-modus waren geweest, LENGTH() zou hetzelfde hebben geretourneerd als CHAR_LENGTH() .

Niet-strings

Als het argument geen string is, wordt het geconverteerd naar een string.

Hier is nog een voorbeeld dat een getal gebruikt:

SELECT LENGTH(1234);

Resultaat:

+--------------+
| LENGTH(1234) |
+--------------+
|            4 |
+--------------+

Nullargumenten

Doorgeven van null retourneert null :

SELECT LENGTH(null);

Resultaat:

+--------------+
| LENGTH(null) |
+--------------+
|         NULL |
+--------------+

Ontbrekend argument

LENGTH() . aanroepen zonder een argument door te geven resulteert in een fout:

SELECT LENGTH();

Resultaat:

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

  1. De retourwaarde verkrijgen van JDBC MSSQL

  2. Opgeslagen MySQL-functies en -procedures maken en uitvoeren?

  3. Productvarianten modelleren

  4. Hoe informatie te krijgen over compileerfouten in Oracle/TOAD