2012-02-22 15 views
22

कृपया मेरी मदद शर्तों के साथ एक एसक्यूएल क्वेरी लिखने के रूप मेंएसक्यूएल क्वेरी जैसे

Select * from Table1 where EmpPU NOT Like IN ('%CSE%', '%ECE%', '%EEE%') 

'नहीं की तरह' त्रुटि हो रही है।

+1

संभव डुप्लिकेट यह संभव के लिए पसंद है और में उपयोग करने के लिए है एक कहां स्टेटमेंट?] (http://stackoverflow.com/questions/4335359/is-it-possible-to-use-like-and-in-for-a-where-statment) – onedaywhen

उत्तर

53

आप की तरह है और में नहीं जोड़ सकते बयान नीचे हालांकि काम करना होगा:।

Select * from Table1 
where EmpPU NOT Like '%CSE%' 
AND EmpPU NOT Like '%ECE%' 
AND EmpPU NOT Like '%EEE%' 
0

तुम कोशिश कर सकते इस

Select * from Table1 where 
    EmpPU NOT Like '%CSE%' 
AND EmpPU NOT Like '%ECE%' 
AND EmpPU NOT Like '%EEE%' 
+0

मैं एक ही जाना चाहता हूं एकाधिक 'टाइप नहीं' लिखने के बजाय सभी पैरामीटर शब्द – venkat

+0

आपकी क्वेरी 'त्रुटि 156, स्तर 15, राज्य 1, रेखा 3 कीवर्ड' पसंद 'के निकट गलत वाक्यविन्यास प्राप्त करने के साथ 'ERROR' प्राप्त करने के साथ।' – venkat

13

क्योंकि आप दो वाक्य रचना एक साथ मिश्रण कर रहे हैं यही कारण है कि।

यदि आपके पास हमेशा उन तीन मान हैं, तो आप केवल तीन और अभिव्यक्तियों के परिणाम देख सकते हैं।

SELECT 
    * 
FROM 
    Table1 
WHERE 
     EmpPU NOT LIKE '%CSE%' 
    AND EmpPU NOT LIKE '%ECE%' 
    AND EmpPU NOT LIKE '%EEE%' 

यदि आपको इसे "किसी भी संख्या" मान के लिए करने की आवश्यकता है, तो आप मूल्यों को एक तालिका में डाल सकते हैं और इसमें शामिल हो सकते हैं।

WITH 
    myData 
AS 
(
      SELECT '%CSE%' AS match 
    UNION ALL SELECT '%ECE%' AS match 
    UNION ALL SELECT '%EEE%' AS match 
) 

SELECT 
    * 
FROM 
    Table1 
LEFT JOIN 
    myData 
    ON Table1.EmpPU LIKE myData.match 
WHERE 
    myData.match IS NULL 

या ...

WITH 
    myData 
AS 
(
      SELECT '%CSE%' AS match 
    UNION ALL SELECT '%ECE%' AS match 
    UNION ALL SELECT '%EEE%' AS match 
) 

SELECT 
    * 
FROM 
    Table1 
WHERE 
    NOT EXISTS (SELECT * FROM myData WHERE Table1.EmpPU LIKE match) 
1

या आप इसे इस तरह कर सकते हैं:

SELECT 
    * 
FROM 
    Table1 
WHERE NOT EXISTS 
    (
     SELECT 
      NULL 
     FROM 
     (
      SELECT '%CSE%' AS column1 UNION ALL 
      SELECT '%ECE%' UNION ALL 
      SELECT '%EEE%' 
     ) AS tbl 
     WHERE Table1.EmpPU LIKE tbl.column1 
    ) 
3

आप नहीं कर सकते की तरह गठबंधन और

में आप कर सकते हैं:

select * from Table1 
where EmpPU not in ('%CSE%', '%ECE%', '%EEE%') 

लेकिन आप% वाइल्डकार्ड

से लाभ अभ्यस्त आप% ही एकमात्र विकल्प की जरूरत है है:

Select * from Table1 
where EmpPU not like '%CSE%' and EmpPU not like '%ECE%' and EmpPU not like '%EEE%' 
+0

इसके अलावा आपका मतलब' OR' के बजाय 'AND' है? और आपको वहां भी फ़ील्ड नाम निर्दिष्ट करने की आवश्यकता है? * [इस उत्तर का अंतिम भाग एक हटाए गए उत्तर के समान चरित्र के लिए चरित्र है ...] * – MatBailie

+0

नहीं, इसका OR या। रिकॉर्ड को बाहर करने के लिए केवल शर्तों में से एक सत्य होना चाहिए। इसमें "ईईई" के साथ एक पंक्ति को बाहर रखा जाना चाहिए, लेकिन यह सीएसई – Diego

+1

की तरह नहीं है यह बिल्कुल सही बात है। एक पंक्ति *** शामिल है *** यदि WHERE क्लॉज सही साबित होता है, तो चलिए एक उदाहरण के रूप में 'SMEEEG'' लेते हैं और अपना कोड आज़माते हैं ...'('SMEEEG' '% CSE%' की तरह नहीं) या ('SMEEEG' '% ECE%' की तरह नहीं) या ('SMEEEG' '% EEE%' की तरह नहीं) '=>' (TRUE) या (TRUE) या (गलत) '=>' TRUE'। आपके कोड में 'एसएमईईईजीई' शामिल है, भले ही यह *** '% EEE% 'की तरह *** है। आपको '((x पसंद करें) या (x LIKE b) या (x LIKE b) की आवश्यकता है) या आपको' (x पसंद नहीं है) और (x पसंद नहीं है) और (x पसंद नहीं है) '। किसी भी तरह से, आपके पास क्या काम नहीं करता है। माफ़ कीजिये। – MatBailie

6

आप शब्द जो आप शामिल/एक विशेष कॉलम से खोज में बाहर करना चाहते हैं के लिए सेट किया है । आप mysql के नियमित अभिव्यक्ति फ़ंक्शन का उपयोग करना चाह सकते हैं।

एक स्तंभ से शब्दों का वह समूह शामिल न करें:

SELECT 
    * 
FROM 
    Table1 
WHERE 
     EmpPU NOT REGEXP 'CSE|ECE|EEE'; 

एक स्तंभ से शब्दों के सेट खोज:

SELECT 
    * 
FROM 
    Table1 
WHERE 
     EmpPU REGEXP 'CSE|ECE|EEE'; 
की [
+0

को स्टेटमेंट अपडेट किया है, यह एक बेहतर जवाब है क्योंकि यह '(जैसे) पसंद नहीं है, जिससे क्वेरी को बनाए रखना आसान हो जाता है। प्रदर्शन-वार रेगेक्स अधिक कठिन हो सकता है। – Jabberwockey

+0

ओपी टी-एसक्यूएल के बारे में पूछ रहा है। –

+0

यह वास्तव में एक अच्छा समाधान दोस्त है। – aavrug

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