2009-10-28 14 views
26

मेरे पास एक संग्रहीत प्रक्रिया के भीतर निम्न कोड है।एसक्यूएल स्टेटमेंट की तरह नहीं काम कर रहा है

WHERE 
    WPP.ACCEPTED = 1 AND 
    WPI.EMAIL LIKE '%@MATH.UCLA.EDU%' AND 
    (WPP.SPEAKER = 0 OR 
    WPP.SPEAKER IS NULL) AND 
    WPP.COMMENT NOT LIKE '%CORE%' AND 
    WPP.PROGRAMCODE = 'cmaws3' 

नहीं की तरह बयान नहीं कर रहा है, और हाँ से पहले किसी को भी कहते हैं कुछ भी वहाँ टिप्पणी स्तंभ के साथ आइटम है कि कोर शामिल नहीं है और सभी स्तंभों ठीक कर रहे हैं।

क्या किसी को पता है कि इसमें क्या गलत है?

+2

"काम नहीं कर रहे" से आपका क्या मतलब है? अपवाद फेंक रहा है? या हमेशा झूठी के रूप में हमेशा मूल्यांकन किया जाता है? – Tenner

+0

क्या आप एक पंक्ति के प्रासंगिक मान पोस्ट कर सकते हैं, जिसमें आपकी राय में वापस किया जाना चाहिए, लेकिन यह नहीं है? – Quassnoi

+0

@mattgcon अगर आपको कोई उत्तर मिलता है जो आपके द्वारा पूछे गए प्रश्न का उत्तर देता है, तो वोटों की संख्या के नीचे दिए गए चेक पर क्लिक करके उत्तर को "स्वीकार करें"। –

उत्तर

43

यदि WPP.COMMENT में NULL है, तो स्थिति मेल नहीं खाई जाएगी।

इस क्वेरी:

SELECT 1 
WHERE NULL NOT LIKE '%test%' 

कुछ भी नहीं वापस आ जाएगी।

एक NULL स्तंभ पर, दोनों LIKE और NOT LIKE किसी भी खोज स्ट्रिंग के खिलाफ NULL वापस आ जाएगी।

क्या आप एक पंक्ति के प्रासंगिक मान पोस्ट कर सकते हैं, जिसमें आपकी राय में वापस किया जाना चाहिए, लेकिन यह नहीं है?

6

क्या आपके विशेष टिप्पणी कॉलम का मूल्य शून्य है?

कभी-कभी नहीं पता कि कैसे नल के आसपास ठीक से व्यवहार करना है।

0

mattgcon,

काम करना चाहिए, आप और अधिक पंक्तियां प्राप्त यदि आप "नहीं पसंद" बाहर टिप्पणी की लाइन के साथ एक ही एसक्यूएल चला सकता हूँ? यदि नहीं, तो डेटा की जांच करें। मुझे पता है कि आपने अपने प्रश्न में उल्लेख किया है, लेकिन जांचें कि वास्तविक SQL कथन उस खंड का उपयोग कर रहा है। एनयूएलएल के साथ अन्य जवाब भी एक अच्छा विचार है।

5

मैं बस एक ही मुद्दे पर आया, और इसे हल किया, लेकिन इससे पहले कि मुझे यह पोस्ट नहीं मिला। और अपने प्रश्न के रूप में देख रहा है वास्तव में उत्तर नहीं दिया गया है, यहाँ मेरी समाधान (जो उम्मीद है कि आप के लिए काम करेंगे, या किसी और ही बात मैंने किया था के लिए खोज है,

के बजाय,

... AND WPP.COMMENT NOT LIKE '%CORE%' ... 

प्रयास करें;

... AND NOT WPP.COMMENT LIKE '%CORE%' ... 

मूल रूप से "नहीं" अन्य क्षेत्र मैं मेरे लिए काम किया मूल्यांकन किया गया था की ओर बढ़ रहा है।

+3

स्टैक ओवरफ्लो में आपका स्वागत है। असल में अभी भी नल शामिल नहीं होंगे, जो सही व्यवहार है क्योंकि 'शून्य' किसी भी चीज़ के बराबर नहीं है, यहां तक ​​कि खुद भी नहीं। यदि आप नल शामिल करना चाहते हैं, तो या तो एक शर्त यानी 'या कॉलम IS NULL' जोड़ें या 'COALESCE' का उपयोग करें ताकि मूल्य कभी शून्य न हो। – Leigh

3

बस इस पार चलो, इस सवाल का जवाब आसान है,का उपयोग 210। एसक्यूएल पंक्तियों को वापस नहीं होगा यदि क्षेत्र परीक्षण किए जाने (कुछ रिकॉर्ड में) कोई मूल्य नहीं है जब एक पाठ तुलना खोज कर रही है, जैसे:

WHERE wpp.comment NOT LIKE '%CORE%' 

तो, आप अस्थायी रूप से null में एक मूल्य के स्थानापन्न है (खाली) ISNULL आदेश, जैसे

WHERE (ISNULL(wpp.comment,'')) NOT LIKE '%CORE%' 

का उपयोग कर यह तो आपके सभी रिकॉर्ड nulls है और किसी भी अपने मिलान मापदंड है कि छोड़ देते हैं कि दिखाएगा द्वारा रिकॉर्ड।यदि आप चाहते थे, तो आप याद रखने में मदद के लिए अल्पविराम में कुछ डाल सकते हैं, उदाहरण के लिए

WHERE (ISNULL(wpp.comment,'some_records_have_no_value')) NOT LIKE '%CORE%' 

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

  • कोई संबंधित समस्या नहीं^_^