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()
danLENGTHB()
sintaks, argumen dapat berupa salah satu tipe dataCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, atauNCLOB
. - Saat menggunakan
LENGTHC()
,LENGTH2()
danLENGTH4()
sintaks, argumen dapat berupa salah satu tipe dataCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
(tapi tidakCLOB
atauNCLOB
).
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: