Oracle
 sql >> база данни >  >> RDS >> Oracle

LENGTH() Функция в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Присъединяване на вложен цикъл в Oracle 11g

  2. Как да съпоставите низ с DB последователност в Hibernate

  3. Oracle (Oracle?) Joins - инструмент/скрипт за преобразуване?

  4. В Oracle възможно ли е да се ВМЕСНА или АКТУАЛИЗИРА запис чрез изглед?

  5. Как да форматирате числа със знак минус/плюс в Oracle