Oracle में, SIGN()
फ़ंक्शन अपने तर्क का संकेत -1
. के रूप में देता है , 0
, या 1
, इस पर निर्भर करता है कि तर्क नकारात्मक है, शून्य है, या सकारात्मक है, और यह भी निर्भर करता है कि तर्क NUMBER
प्रकार का है या नहीं या एक फ़्लोटिंग-पॉइंट नंबर।
सिंटैक्स
वाक्य रचना इस प्रकार है:
SIGN(n)
जहां n
कोई भी संख्यात्मक डेटा प्रकार, या कोई भी गैर-संख्यात्मक डेटा प्रकार हो सकता है जिसे परोक्ष रूप से NUMBER
में परिवर्तित किया जा सकता है , और NUMBER
. लौटाता है ।
परिणाम को कैसे समझें
वास्तविक परिणाम इस बात पर निर्भर करेगा कि तर्क एक NUMBER
है या नहीं टाइप करें, या बाइनरी फ़्लोटिंग-पॉइंट नंबर (BINARY_FLOAT
.) और BINARY_DOUBLE
)।
NUMBER
. के मान के लिए टाइप करें, चिन्ह है:
- -1 अगर
n
<0 - 0 अगर
n
=0 - 1 अगर
n
>0
बाइनरी फ़्लोटिंग-पॉइंट नंबरों के लिए, SIGN()
फ़ंक्शन संख्या का साइन बिट देता है। साइन बिट है:
- -1 अगर
n
<0 - +1 अगर
n
>=0 याn
=NaN
उदाहरण
इस उदाहरण में, मैं एक NUMBER
. पास करता हूं टाइप करें:
SELECT SIGN(78.50)
FROM DUAL;
परिणाम:
SIGN(78.50) ______________ 1
NUMBER
. के साथ विभिन्न आउटपुट प्रदर्शित करने के लिए यहां एक और उदाहरण दिया गया है टाइप करें:
SELECT
SIGN(7),
SIGN(0),
SIGN(-7)
FROM DUAL;
परिणाम:
SIGN(7) SIGN(0) SIGN(-7) __________ __________ ___________ 1 0 -1
बाइनरी फ़्लोटिंग-पॉइंट नंबर
जब हम उन नंबरों को बाइनरी फ़्लोटिंग-पॉइंट नंबरों के रूप में डालते हैं तो क्या होता है इसका एक उदाहरण यहां दिया गया है:
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;
परिणाम:
7 0 -7 NaN ____ ____ _____ ______ 1 1 -1 1
मैंने NaN
. भी जोड़ा सूची में (binary_float_nan
फ़्लोटिंग-पॉइंट शाब्दिक BINARY_FLOAT
. प्रकार के मान का प्रतिनिधित्व करता है जिसके लिए शर्त IS
. है NAN
सच है)।
गैर-संख्यात्मक तर्क
यहां बताया गया है कि जब हम एक गैर-संख्यात्मक तर्क पारित करते हैं जिसे एक संख्यात्मक डेटा प्रकार में परिवर्तित नहीं किया जा सकता है:
SELECT SIGN('Bruce')
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT SIGN('Bruce') FROM DUAL Error report - ORA-01722: invalid number
शून्य मान
पासिंग null
रिटर्न null
:
SET NULL 'null';
SELECT SIGN(null)
FROM DUAL;
परिणाम:
SIGN(NULL) _____________ null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null
. खाली स्थान लौटाते हैं SQL SELECT
. के परिणामस्वरूप होता है बयान।
हालांकि, आप SET NULL
. का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null
लौटाया जाना चाहिए।
गलत तर्क गणना
कॉलिंग SIGN()
कोई तर्क पारित किए बिना एक त्रुटि देता है:
SELECT SIGN()
FROM DUAL;
परिणाम:
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:
और तर्कों की गलत संख्या पास करने से त्रुटि होती है:
SELECT SIGN(2, 3)
FROM DUAL;
परिणाम:
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: