sql >> Databasteknik >  >> RDS >> Oracle

LENGTH() Funktion i Oracle

I Oracle, LENGTH() funktion returnerar längden på dess argument.

LENGTH() kan också ses som en grupp av funktioner. Det finns fem separata funktioner; LENGTH() , LENGTHB() , LENGTHC() , LENGTH2() och LENGTH4() . Varje funktion beräknar längden på olika sätt.

Syntax

Syntaxen ser ut så här:

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

Funktionerna beräknar längder enligt följande:

Funktion Beräknar längd med...
LENGTH() Tecken som definieras av den inmatade teckenuppsättningen, där det första tecknet i strängen har position 1.
LENGTHB() Byte
LENGTHC() Unicode kompletta tecken
LENGTH2() UCS2-kodpunkter
LENGTH4() UCS4-kodpunkter

Argumenttypen kan vara följande:

  • När du använder LENGTH() och LENGTHB() syntax, kan argumentet vara vilken som helst av datatyperna CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , eller NCLOB .
  • När du använder LENGTHC() , LENGTH2() och LENGTH4() syntax, kan argumentet vara vilken som helst av datatyperna CHAR , VARCHAR2 , NCHAR , NVARCHAR2 (men inte CLOB eller NCLOB ).

Exempel

Här är ett grundläggande exempel:

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

Resultat:

11

Jämfört med LENGTHB()

Det här exemplet visar hur resultaten kan skilja sig, beroende på vilken specifik funktion du använder och vilken teckenuppsättning som är involverad.

I det här fallet jämför vi LENGTH() med LENGTHB() :

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

Resultat:

   LENGTH    LENGTHB 
_________ __________ 
       17         22

Vi kan se att de två funktionerna gav två olika resultat. Detta beror på att vissa tecken i denna sträng använder två byte.

LENGTH() Funktionen returnerar längden i tecken som definieras av den inmatade teckenuppsättningen, medan LENGTHB() funktion returnerar längden i byte .

Om vi ​​återgår till den ursprungliga strängen är resultaten desamma mellan de två funktionerna:

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

Resultat:

   LENGTH    LENGTHB 
_________ __________ 
       11         11 

Den här strängen använder bara en byte per tecken, så längden i byte är densamma som antalet tecken.

Nollargument

Om argumentet är null , resultatet är 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;

Resultat:

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

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Inkorrekt antal argument

Att anropa funktionen utan att skicka några argument resulterar i ett fel:

SELECT LENGTH()
FROM DUAL;

Resultat:

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:

Och att skicka för många argument resulterar också i ett fel:

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

Resultat:

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. MariaDB JSON_LENGTH() Förklarad

  2. Hur skapar och frågar jag länkade databasservrar i SQL Server?

  3. Hur RandomBlob() fungerar i SQLite

  4. Måste deklarera den skalära variabeln