Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल में साइन () फ़ंक्शन

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका पंक्ति मौजूद है या नहीं, इसका परीक्षण करने का एक प्रभावी तरीका

  2. वर्तमान परिवर्तन खोजने के लिए LogMiner का उपयोग करना

  3. बिना अस्थायी तालिकाओं के SQL क्वेरी का उपयोग करके समूह में प्रत्येक तत्व के लिए अनुक्रम संख्या कैसे जोड़ें

  4. उस पंक्ति को प्राप्त करें जिसमें कॉलम के लिए अधिकतम मान है

  5. फिक्स "इंटेल डिफ़ॉल्ट उपसर्ग (/ usr / स्थानीय) में एआरएम प्रोसेसर पर होमब्रू में स्थापित नहीं कर सकता!"