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 ataun
=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: