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

Fungsi TRUNC(angka) di Oracle

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:

  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.DataAccess.Client.OracleException ORA-03135:koneksi kehilangan kontak

  2. Cara menggunakan AD Terdistribusi untuk mengurangi waktu patching di Oracle EBS

  3. Bagaimana cara membuat Oracle membuat pernyataan tabel di SQL*Plus

  4. Oracle PL/SQL - Koleksi (Tabel Bersarang)

  5. Perbedaan rencana eksekusi yang tidak dapat diabaikan dengan Oracle saat menggunakan Stempel Waktu atau Tanggal jdbc