Di Oracle Database, TRUNC(number)
fungsi mengembalikan angka tertentu, dipotong ke sejumlah tempat desimal tertentu.
Oracle juga memiliki TRUNC(date)
fungsi, yang digunakan pada tanggal. Artikel ini semata-mata tentang TRUNC(number)
fungsi, yang digunakan pada angka.
Sintaks
Sintaksnya seperti ini:
TRUNC(n1 [, n2 ])
Dimana n1
adalah nilai yang akan dipotong, dan n2
adalah argumen opsional yang menentukan berapa banyak tempat desimal yang harus dipotong n1
ke. Jika n2
dihilangkan, maka n1
dipotong menjadi nol tempat desimal.
n1
dapat berupa tipe data numerik atau tipe data nonnumerik apa pun yang dapat secara implisit dikonversi ke tipe data numerik.
Contoh
Ini contohnya:
SELECT TRUNC(3.95)
FROM DUAL;
Hasil:
TRUNC(3.95) ______________ 3
Tentukan Tempat Desimal
Berikut adalah contoh meneruskan argumen kedua untuk menentukan berapa banyak tempat desimal yang akan dipotong nilainya:
SELECT TRUNC(1.25817, 2)
FROM DUAL;
Hasil:
TRUNC(1.25817,2) ___________________ 1.25
Berikut beberapa lainnya:
SELECT
TRUNC(1.25817, 1) AS "1",
TRUNC(1.25817, 2) AS "2",
TRUNC(1.25817, 3) AS "3",
TRUNC(1.25817, 4) AS "4"
FROM DUAL;
Hasil:
1 2 3 4 ______ _______ ________ _________ 1.2 1.25 1.258 1.2581
Tempat Desimal Negatif
Argumen kedua bisa menjadi nilai negatif jika diperlukan. Melewati nilai negatif menyebabkan digit ke kiri dari tempat desimal menjadi nol.
Contoh:
SELECT TRUNC(6973.45, -2)
FROM DUAL;
Hasil:
TRUNC(6973.45,-2) ____________________ 6900
Dibandingkan dengan ROUND()
TRUNC()
fungsinya berbeda dengan ROUND()
fungsi. ROUND()
fungsi membulatkan angka ke atas dalam beberapa kasus dan ke bawah pada kasus lainnya. TRUNC()
fungsi, di sisi lain, hanya memotong nomor tanpa pembulatan.
Berikut perbandingan untuk menunjukkan perbedaan ini:
SELECT
TRUNC(3.6789, 2),
ROUND(3.6789, 2)
FROM DUAL;
Hasil:
TRUNC(3.6789,2) ROUND(3.6789,2) __________________ __________________ 3.67 3.68
Ini juga berbeda dengan FLOOR()
fungsi, yang mengembalikan bilangan bulat terbesar yang sama dengan atau kurang dari argumennya. FLOOR()
tidak menerima argumen kedua seperti ROUND()
dan TRUNC()
do (toh hanya mengembalikan bilangan bulat).
Nilai Null
Jika ada argumen null
, hasilnya null
:
SET NULL 'null';
SELECT
TRUNC(null, 2),
TRUNC(2.35, null),
TRUNC(null, null)
FROM DUAL;
Hasil:
TRUNC(NULL,2) TRUNC(2.35,NULL) TRUNC(NULL,NULL) ________________ ___________________ ___________________ null null null
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai null muncul sebagai hasil dari SELECT
SQL penyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Argumen Non-Numerik
Inilah yang terjadi ketika kami memberikan argumen non-numerik:
SELECT TRUNC('Hundred', 'Two')
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT TRUNC('Hundred', 'Two') FROM DUAL Error report - ORA-01722: invalid number
Jumlah Argumen Tidak Valid
Memanggil TRUNC()
dengan jumlah argumen yang salah, atau tanpa argumen menghasilkan kesalahan:
SELECT TRUNC()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT TRUNC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Dan:
SELECT TRUNC(1, 2, 3)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT TRUNC(1, 2, 3) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: