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()
ochLENGTHB()
syntax, kan argumentet vara vilken som helst av datatypernaCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, ellerNCLOB
. - När du använder
LENGTHC()
,LENGTH2()
ochLENGTH4()
syntax, kan argumentet vara vilken som helst av datatypernaCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
(men inteCLOB
ellerNCLOB
).
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: