sql >> Database >  >> RDS >> Oracle

LENGTH() Functie in Oracle

In Oracle is de LENGTH() functie geeft de lengte van zijn argument terug.

LENGTH() kan ook worden gezien als een groep functies. Er zijn vijf afzonderlijke functies; LENGTH() , LENGTHB() , LENGTH() , LENGTH2() , en LENGTH4() . Elke functie berekent de lengte op een andere manier.

Syntaxis

De syntaxis gaat als volgt:

{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char)

De functies berekenen de lengtes als volgt:

Functie Berekent lengte met…
LENGTH() Tekens zoals gedefinieerd door de invoertekenset, waarbij het eerste teken van de tekenreeks positie 1 heeft.
LENGTHB() Bytes
LENGTHC() Unicode volledige tekens
LENGTH2() UCS2-codepunten
LENGTH4() UCS4-codepunten

Het argumenttype kan als volgt zijn:

  • Bij gebruik van de LENGTH() en LENGTHB() syntaxis, het argument kan elk van de gegevenstypen zijn CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , of NCLOB .
  • Bij gebruik van de LENGTHC() , LENGTH2() en LENGTH4() syntaxis, het argument kan elk van de gegevenstypen zijn CHAR , VARCHAR2 , NCHAR , NVARCHAR2 (maar niet CLOB of NCLOB ).

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT LENGTH('Big fat cat')
FROM DUAL;

Resultaat:

11

Vergeleken met LENGTHB()

Dit voorbeeld laat zien hoe de resultaten kunnen verschillen, afhankelijk van de specifieke functie die u gebruikt en de betrokken tekenset.

In dit geval vergelijken we LENGTH() met LENGTHB() :

SELECT 
    LENGTH('Böyük yağlı pişik') AS LENGTH,
    LENGTHB('Böyük yağlı pişik') AS LENGTHB
FROM DUAL;

Resultaat:

   LENGTH    LENGTHB 
_________ __________ 
       17         22

We kunnen zien dat de twee functies twee verschillende resultaten hebben opgeleverd. Dit komt omdat sommige tekens in deze tekenreeks twee bytes gebruiken.

De LENGTH() functie retourneert de lengte in tekens zoals gedefinieerd door de invoertekenset, terwijl de LENGTHB() functie retourneert de lengte in bytes .

Als we terugkeren naar de originele string, zijn de resultaten hetzelfde tussen de twee functies:

SELECT 
    LENGTH('Big fat cat') AS LENGTH,
    LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL;

Resultaat:

   LENGTH    LENGTHB 
_________ __________ 
       11         11 

Deze string gebruikt slechts één byte per teken, en dus is de lengte in bytes gelijk aan het aantal tekens.

Nullargument

Als het argument null is , het resultaat is null :

SET NULL 'null';
SELECT 
    LENGTH(null) AS LENGTH,
    LENGTHB(null) AS LENGTHB,
    LENGTHC(null) AS LENGTHC,
    LENGTH2(null) AS LENGTH2,
    LENGTH4(null) AS LENGTH4
FROM DUAL;

Resultaat:

   LENGTH    LENGTHB    LENGTHC    LENGTH2    LENGTH4 
_________ __________ __________ __________ __________ 
     null       null       null       null       null 

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Onjuist aantal argumenten

Het aanroepen van de functie zonder het doorgeven van argumenten resulteert in een fout:

SELECT LENGTH()
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LENGTH()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

En het doorgeven van te veel argumenten resulteert ook in een fout:

SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Wat betekent een (+) teken in een Oracle SQL WHERE-clausule?

  2. Leeftijd berekenen vanaf verjaardag met oracle plsql-trigger en de leeftijd in de tabel invoegen

  3. Kan INSERT [...] ON CONFLICT worden gebruikt voor schendingen van buitenlandse sleutels?

  4. Primaire sleutel automatisch verhogen in SQL Server Management Studio 2012