DBMS के आधार पर, निम्न में से एक या अधिक कार्य करेगा:
SELECT NULL LIMIT 0
(पोस्टग्रेएसक्यूएल और माईएसक्यूएल सिंटैक्स) /SELECT TOP 0 1
(एमएस एसक्यूएल सर्वर सिंटैक्स)SELECT NULL WHERE FALSE
(बूलियन प्रकार के साथ DBMS, जैसे PostgreSQL)SELECT NULL WHERE 1=0
(अधिकांश DBMSes)
Oracle के लिए, इन्हें SELECT NULL FROM DUAL
. के रूप में होना चाहिए , मुझे विश्वास है, क्योंकि आपके पास SELECT
नहीं हो सकता है बिना FROM
. के किसी प्रकार का खंड; सुनिश्चित नहीं हैं कि LIMIT
. के कौन से संस्करण हैं / TOP
और WHERE
यह स्वीकार करेगा।
एक अधिक विस्तृत विकल्प यह है कि एक (अस्थायी) तालिका बनाई जाए और उसमें कोई पंक्तियाँ न डालें, जो आपको किसी भी संख्या में कॉलम दे सकती हैं, जिनमें कोई मान न होने पर भी प्रकार जुड़े होंगे:
-- PostgreSQL
CREATE TEMP TABLE dummy ( a Int, b VarChar(42) );
SELECT * FROM dummy;
-- MS SQL Server
CREATE TABLE #DUMMY ( a Int, b VarChar(42) );
SELECT * FROM #DUMMY;
PostgreSQL में, आप बिना कॉलम वाली तालिका भी बना सकते हैं, जिससे आप शून्य पंक्तियों और शून्य स्तंभों के साथ परिणाम सेट कर सकते हैं। :
CREATE TEMP TABLE empty ();
SELECT * FROM empty;
एक और संभावना यह है कि यदि डीबीएमएस में सेट-रिटर्निंग फ़ंक्शन हैं, तो वे एक खाली सेट वापस करने में सक्षम हो सकते हैं। उदाहरण के लिए, फिर से PostgreSQL में जैसा कि मैं सबसे अच्छी तरह जानता हूं, आप generate_series()
:
SELECT * FROM generate_series(0,-1);