2014-10-01 7 views
7

SQL में, तालिका के पंक्तियों का चयन कैसे करें जहां कॉलम (डेटाटाइप: number) Oracle 10g पर Infinity के बराबर है?चुनें कि संख्या अनंतता

select * from MYTABLE where MYCOLUMN = Infinity; 
+1

स्तंभ के डेटा प्रकार क्या है? – Sasse

+0

@Sasse यह एक 'संख्या' है। – BnJ

+1

आप किस डेटाबेस का उपयोग कर रहे हैं? – Sasse

उत्तर

7

Laurent Schneider से:

select * from MYTABLE where MYCOLUMN = binary_double_infinity; 

या एक अंतर्निहित कलाकारों के साथ, बस:

select * from MYTABLE where cast(MYCOLUMN as binary_double) = binary_double_infinity; 

या the is infinite floating point condition का उपयोग कर:

select * from MYTABLE where cast(MYCOLUMN as binary_double) is infinite; 

मैं एक एसक्यूएल फिडल देते हैं, लेकिन जैसे लॉरेन ने नोट किया, "अपने ऑरैक क्लाइंट के साथ बहुत सारी बग की उम्मीद है"; यह एसक्यूएल डेवलपर में काम करता है, लेकिन एसक्यूएल फिडल को न्यूमेरिक ओवरफ्लो मिलता है।

+0

अच्छा, मुझे 'अनंत' के बारे में पता नहीं था। –

+0

@LalitKumarB - न तो कुछ मिनट पहले तक और यह देखने के लिए प्रयोग किया गया कि क्यों 'inf' काम नहीं किया * 8-) –

2

चलो पहले देखने Infinity पाने के लिए:

SQL> SELECT 1/0F COL FROM DUAL 
    2/

     COL 
---------- 
     Inf 

अब, चलो तुलना पर ध्यान दें:

SQL> WITH DATA AS(
    2 SELECT 1/0F COL FROM DUAL) 
    3 SELECT * FROM data WHERE col = binary_double_infinity 
    4/

     COL 
---------- 
     Inf 

अद्यतन: धन्यवाद एलेक्स को, is infinite खंड है एक विकल्प भी।

मैं 12.1.0.1 पर हूं।

is infinite खंड के साथ समान क्वेरी:

SQL> WITH DATA AS(
    2 SELECT 1/0F COL FROM DUAL) 
    3 SELECT * FROM data WHERE col is infinite 
    4/

     COL 
---------- 
     Inf 
+0

सकारात्मक और * नकारात्मक * अनंत दोनों के लिए 'अनंत है' परीक्षण के रूप में, एक अतिरिक्त भविष्यवाणी ' और n> 0' को 'col = binary_double_infinity' के समान परिणाम प्राप्त करने के लिए जोड़ा जाना चाहिए। –

संबंधित मुद्दे