Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

LENGTH() Fungsi di Oracle

Di Oracle, LENGTH() fungsi mengembalikan panjang argumennya.

LENGTH() juga dapat dianggap sebagai sekelompok fungsi. Ada lima fungsi terpisah; LENGTH() , LENGTHB() , LENGTHC() , LENGTH2() , dan LENGTH4() . Setiap fungsi menghitung panjang dengan cara yang berbeda.

Sintaks

Sintaksnya seperti ini:

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

Fungsi menghitung panjang sebagai berikut:

Fungsi Menghitung panjang menggunakan…
LENGTH() Karakter seperti yang didefinisikan oleh set karakter input, dengan karakter pertama dari string memiliki posisi 1.
LENGTHB() Byte
LENGTHC() Unicode karakter lengkap
LENGTH2() poin kode UCS2
LENGTH4() Poin kode UCS4

Tipe argumennya bisa sebagai berikut:

  • Saat menggunakan LENGTH() dan LENGTHB() sintaks, argumen dapat berupa salah satu tipe data CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , atau NCLOB .
  • Saat menggunakan LENGTHC() , LENGTH2() dan LENGTH4() sintaks, argumen dapat berupa salah satu tipe data CHAR , VARCHAR2 , NCHAR , NVARCHAR2 (tapi tidak CLOB atau NCLOB ).

Contoh

Berikut ini contoh dasarnya:

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

Hasil:

11

Dibandingkan dengan LENGTHB()

Contoh ini menunjukkan bagaimana hasilnya bisa berbeda, tergantung pada fungsi spesifik yang Anda gunakan, dan rangkaian karakter yang terlibat.

Dalam hal ini, kami membandingkan LENGTH() dengan LENGTHB() :

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

Hasil:

   LENGTH    LENGTHB 
_________ __________ 
       17         22

Kita dapat melihat bahwa kedua fungsi mengembalikan dua hasil yang berbeda. Ini karena beberapa karakter dalam string ini menggunakan dua byte.

LENGTH() fungsi mengembalikan panjang karakter seperti yang didefinisikan oleh set karakter input, sedangkan LENGTHB() fungsi mengembalikan panjang dalam byte .

Jika kita kembali ke string asli, hasilnya sama antara kedua fungsi:

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

Hasil:

   LENGTH    LENGTHB 
_________ __________ 
       11         11 

String ini hanya menggunakan satu byte per karakter, sehingga panjangnya dalam byte sama dengan jumlah karakter.

Argumen Null

Jika argumennya null , hasilnya 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;

Hasil:

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

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null terjadi sebagai akibat dari SQL SELECT penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Jumlah Argumen Salah

Memanggil fungsi tanpa meneruskan argumen apa pun menghasilkan kesalahan:

SELECT LENGTH()
FROM DUAL;

Hasil:

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:

Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:

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

Hasil:

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. Fungsi MySQL COALESCE dan NULLIF

  2. Apa yang setara dengan varchar(max) di Oracle?

  3. Pisahkan nilai yang dipisahkan koma dari kolom dalam baris, melalui kueri Oracle SQL

  4. Menggunakan Oracle menggabungkan tiga tabel menjadi satu dengan PIVOT

  5. Bagaimana cara membuat Kunci Asing dengan ON UPDATE CASCADE di Oracle?