2011-12-02 16 views
6

मैं किसी भी तालिका पर काम किए बिना कुछ मूल्यांकनों का परीक्षण करना चाहता हूं। उदाहरण के लिए, आपसरल बुलेन मूल्यांकन के लिए चयन का उपयोग

SELECT 1+1 
>2 

लिख सकते हैं मैं कुछ इस तरह हासिल करना चाहते हैं:

SELECT 2 > 1 
>FALSE 

मुझे पता है कि सबसे इंजन एक बूलियन डेटा प्रकार की अवधारणा नहीं है, लेकिन मैं डॉन ' टी पता नहीं कैसे उनके आंतरिक काम (भले ही मुझे लगता है कि सबकुछ <> 0 true है, जैसे सी में)। वैसे भी, प्रतिक्रिया के प्रारूप वास्तव में कोई फर्क नहीं है, यह है, चाहे true/false या 0/1

+4

ओह कितना मैं चाहता हूँ एसक्यूएल एक वास्तविक बूलियन प्रकार ... –

उत्तर

4
SELECT CASE WHEN 2 > 1 THEN cast(0 as bit) ELSE cast(1 as bit) END 
3

संपादित करें:

एसक्यूएल सर्वर 2012 (डेनलि):

SELECT IIF(2 > 1, 'TRUE', 'FALSE') 
+0

मैं इस समाधान एक बहुत चाहते हैं के लिए किया था, लेकिन यह मेरी एसक्यूएल सर्वर पर काम करने के लिए प्रतीत नहीं होता है 2008 – Raffaele

+0

मेरी गलती है, यह 2012 से है : - /, मैं कल इसके बारे में पढ़ रहा हूं ([डेनाली - तार्किक कार्य - आईआईएफ() - एक त्वरित परिचय] (http://blog.sqlauthority.com/2011/09/10/sql-server-denali- तार्किक-कार्य-आईआईएफ-ए-त्वरित-परिचय /)) और मैं संस्करण भूल गया हूं। –

1

माइस्क्ल और ओरेकल में और स्पष्ट रूप से एसक्यूएल-सर्वर आप कर सकते हैं से nullif (एसक्यूएल-सर्वर के लिए from dual को अनदेखा करें) इसलिए, मान लें कि आप सच के रूप में शून्य नहीं लेते हैं, तो आप गड़बड़ केस स्टेटमेंट के बिना या तारों से निपटने के बिना इस तरह समानता परीक्षण से निपट सकते हैं।

SQL> select nullif(1,0) from dual; 

NULLIF(1,0) 
----------- 
      1 

SQL> select nullif(1,1) from dual; 

NULLIF(1,1) 
----------- 

SQL> 
+0

मुझे इस निर्माण को नहीं पता था। अच्छी बात – Raffaele

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