2012-11-20 17 views
24

मैं गए निम्न क्वेरी रिक्त है: '?'एसक्यूएल क्वेरी यदि पैरामीटर का चयन सभी

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?; 

अब मैं चाहता हूँ कि अगर शून्य है, सभी रिकॉर्डों का चयन किया जाना है। मैं एसक्यूएल में इसे कैसे प्राप्त कर सकता हूं? धन्यवाद

+0

यह बनाता है मुझे नफरत T-SQL और भी ... –

उत्तर

20

तुम भी शून्य मान की जाँच करने के कार्यों IFNULL, COALESCE, NVL, ISNULL उपयोग कर सकते हैं। यह आपके आरडीबीएमएस पर निर्भर करता है।

MySQL:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME); 

या

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME); 

ओरेकल:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME); 

एसक्यूएल सर्वर/साइबेस:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME); 
+1

यदि NAME 'में नल हैं तो यह काम नहीं करेगा। लेकिन गैर-शून्य कॉलम के लिए यह जाने का तरीका है =) (संपादित करें: कम से कम SQL सर्वर में नहीं) –

+0

सावधान रहें कि यह कंडीशनिंग की तुलना में धीमे प्रश्नों का उत्पादन कर सकता है, जिसमें पैरामीटर शून्य होने पर क्लॉज नहीं है। – Kram

53

इस प्रयास करें:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter; 
+0

यह कैसे PHP में उपयोग करने के लिए? – prograshid

+0

@prograshid - PHP –

+0

में क्वेरी को निष्पादित करें मैंने क्वेरी स्ट्रिंग को निष्पादित करने का प्रयास किया लेकिन परिणाम तक पहुंचने पर इसका दिया गया। अपरिभाषित फ़ंक्शन कॉल कह रहा है fetch_assoc – prograshid

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