В Oracle, LENGTH() функцията връща дължината на своя аргумент.
LENGTH() може да се разглежда и като група от функции. Има пет отделни функции; LENGTH() , LENGTHB() , LENGTHC() , LENGTH2() и LENGTH4() . Всяка функция изчислява дължината по различен начин.
Синтаксис
Синтаксисът е така:
{ LENGTH
| LENGTHB
| LENGTHC
| LENGTH2
| LENGTH4
}
(char) Функциите изчисляват дължините, както следва:
| Функция | Изчислява дължината с помощта на… |
|---|---|
LENGTH() | Символи, както са дефинирани от входния набор от знаци, като първият знак от низ има позиция 1. |
LENGTHB() | Байтове |
LENGTHC() | Пълни символи в Unicode |
LENGTH2() | Кодови точки UCS2 |
LENGTH4() | Кодови точки UCS4 |
Типът на аргумента може да бъде както следва:
- Когато използвате
LENGTH()иLENGTHB()синтаксис, аргументът може да бъде всеки от типовете данниCHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOBилиNCLOB. - Когато използвате
LENGTHC(),LENGTH2()иLENGTH4()синтаксис, аргументът може да бъде всеки от типовете данниCHAR,VARCHAR2,NCHAR,NVARCHAR2(но неCLOBилиNCLOB).
Пример
Ето един основен пример:
SELECT LENGTH('Big fat cat')
FROM DUAL; Резултат:
11
В сравнение с LENGTHB()
Този пример показва как резултатите могат да се различават в зависимост от това коя конкретна функция използвате и от набора от символи.
В този случай сравняваме LENGTH() с LENGTHB() :
SELECT
LENGTH('Böyük yağlı pişik') AS LENGTH,
LENGTHB('Böyük yağlı pişik') AS LENGTHB
FROM DUAL; Резултат:
LENGTH LENGTHB
_________ __________
17 22 Можем да видим, че двете функции са върнали два различни резултата. Това е така, защото някои знаци в този низ използват два байта.
LENGTH() функцията връща дължината в знаци, както е дефинирана от входния набор от знаци, докато LENGTHB() функцията връща дължината в байтове .
Ако се върнем към оригиналния низ, резултатите са еднакви между двете функции:
SELECT
LENGTH('Big fat cat') AS LENGTH,
LENGTHB('Big fat cat') AS LENGTHB
FROM DUAL; Резултат:
LENGTH LENGTHB
_________ __________
11 11 Този низ използва само един байт на знак и така дължината в байтове е същата като броя на знаците.
Нулев аргумент
Ако аргументът е null , резултатът е 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; Резултат:
LENGTH LENGTHB LENGTHC LENGTH2 LENGTH4
_________ __________ __________ __________ __________
null null null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.
Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.
Неправилен брой аргументи
Извикването на функцията без предаване на аргументи води до грешка:
SELECT LENGTH()
FROM DUAL; Резултат:
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:
И предаването на твърде много аргументи също води до грешка:
SELECT LENGTH('Big fat cat', 'oops')
FROM DUAL; Резултат:
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: