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

SIGN() Fungsi di Oracle

Di Oracle, SIGN() fungsi mengembalikan tanda argumennya sebagai -1 , 0 , atau 1 , bergantung pada apakah argumennya negatif, nol, atau positif, dan juga bergantung pada apakah argumennya bertipe NUMBER atau angka floating-point.

Sintaks

Sintaksnya seperti ini:

SIGN(n)

Dimana n dapat berupa tipe data numerik apa pun, atau tipe data nonnumerik apa pun yang dapat secara implisit dikonversi ke NUMBER , dan mengembalikan NUMBER .

Cara Menguraikan Hasil

Hasil sebenarnya akan tergantung pada apakah argumennya adalah NUMBER jenis, atau bilangan titik-mengambang biner (BINARY_FLOAT dan BINARY_DOUBLE ).

Untuk nilai NUMBER ketik, tandanya adalah:

  • -1 jika n
  • 0 jika n =0
  • 1 jika n >0

Untuk bilangan biner floating-point, SIGN() fungsi mengembalikan bit tanda nomor. Bit tandanya adalah:

  • -1 jika n
  • +1 jika n >=0 atau n =NaN

Contoh

Dalam contoh ini, saya memberikan NUMBER ketik:

SELECT SIGN(78.50)
FROM DUAL;

Hasil:

   SIGN(78.50) 
______________ 
             1

Berikut contoh lain untuk mendemonstrasikan berbagai keluaran dengan NUMBER ketik:

SELECT 
    SIGN(7),
    SIGN(0),
    SIGN(-7)
FROM DUAL;

Hasil:

   SIGN(7)    SIGN(0)    SIGN(-7) 
__________ __________ ___________ 
         1          0          -1

Bilangan Biner Floating-Point

Berikut adalah contoh dari apa yang terjadi ketika kita memasukkan angka-angka tersebut sebagai angka floating-point biner:

SELECT 
    SIGN(CAST(7 AS BINARY_FLOAT)) AS "7",
    SIGN(CAST(0 AS BINARY_FLOAT)) AS "0",
    SIGN(CAST(-7 AS BINARY_FLOAT)) AS "-7",
    SIGN(binary_float_nan) AS "NaN"
FROM DUAL;

Hasil:

   7    0    -7    NaN 
____ ____ _____ ______ 
   1    1    -1      1 

Saya juga menambahkan NaN ke daftar (binary_float_nan literal floating-point mewakili nilai tipe BINARY_FLOAT yang kondisinya IS NAN benar).

Argumen Non-Numerik

Inilah yang terjadi ketika kami meneruskan argumen non-numerik yang tidak dapat dikonversi ke tipe data numerik:

SELECT SIGN('Bruce')
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT SIGN('Bruce')
FROM DUAL
Error report -
ORA-01722: invalid number

Nilai Null

Melewati null mengembalikan null :

SET NULL 'null';

SELECT SIGN(null)
FROM DUAL;

Hasil:

   SIGN(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 SIGN() tanpa memberikan argumen apa pun mengembalikan kesalahan:

SELECT SIGN()
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT SIGN()
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 jumlah argumen yang salah menghasilkan kesalahan:

SELECT SIGN(2, 3)
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT SIGN(2, 3)
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. Pemadaman dengan EMCLI

  2. Pivot Oracle dengan subquery

  3. Oracle Pro*C/OCI menginstal handler untuk SIGSEGV/SIGABRT dan teman-teman - mengapa, dan bagaimana cara menonaktifkannya?

  4. ORA-00984:kolom tidak diizinkan di sini

  5. ORA-01830:gambar format tanggal berakhir sebelum mengonversi seluruh string input / Pilih jumlah di mana kueri tanggal