मुझे निम्नलिखित मानों वाली एक तालिका मिली है:

titles:
Accountant
Auditor
Bookkeper
Forensic Accountant
Tax Accountant

मैं उन सभी शीर्षकों का चयन करना चाहता हूं जिनमें "लेखाकार" शामिल नहीं है, मैं वर्तमान में कोशिश कर रहा हूं

SELECT * FROM careers WHERE title NOT REGEXP '^Accountant'

लेकिन यह अभी भी "फोरेंसिक एकाउंटेंट" और "टैक्स एकाउंटेंट" का चयन करता है

कोई विचार?

अग्रिम में धन्यवाद!

0
Agrus 23 मार्च 2017, 16:06
मैं वास्तव में MySQL में रेगेक्स के बारे में नहीं जानता, लेकिन अगर यह PHP जैसा कुछ है, तो ^Accountant का अर्थ है सभी मैच से शुरू लेखाकार। यदि आप ^ को हटा देते हैं तो क्या होगा?
 – 
roberto06
23 मार्च 2017, 16:08
क्या इसके लिए नियमित अभिव्यक्ति की भी आवश्यकता है?
 – 
Nitish
23 मार्च 2017, 16:18

3 जवाब

Regexp के बजाय not like का उपयोग करें:

SELECT * FROM careers WHERE title NOT LIKE '%Accountant%'

देखें SQLFiddle

2
Jens 23 मार्च 2017, 16:28
यह मदद करता है, लेकिन क्या होगा यदि शीर्षक इनपुट इसके बजाय "कर लेखाकार" है?
 – 
Agrus
23 मार्च 2017, 16:16
इसे भी बाहर कर दिया जाएगा, क्योंकि % का अर्थ कोई भी वर्ण है
 – 
Jens
23 मार्च 2017, 16:18

आप इस तरह REGEXP के बजाय LIKE का उपयोग कर सकते हैं:

SELECT * FROM careers WHERE title NOT LIKE '%Accountant%';
0
Shefali 23 मार्च 2017, 16:14
मेरा बुरा :( मैं अपनी प्रविष्टि को संपादित करने का उल्लेख करता हूं, इसके बजाय मैंने डिलीट पर क्लिक किया
 – 
Agrus
23 मार्च 2017, 16:26
मैं आपके उत्तर की नकल नहीं कर रहा हूं। मैं इस प्रश्न को चलाता हूं और उत्तर पोस्ट करता हूं। @ जेन्स
 – 
Shefali
23 मार्च 2017, 16:29

रेगेक्स गलत है, आप कैरेट (^) का उपयोग कर रहे हैं, जिसका अर्थ है कि जिन शब्दों को आप बाहर कर रहे हैं वे एकाउंटेंट से शुरू होने चाहिए, इसके बजाय कैरेट को हटा दें और आपको अच्छा होना चाहिए

SELECT * FROM careers WHERE title NOT REGEXP 'Accountant'

उपयोगकर्ता द्वारा परिभाषित किसी चीज़ को बाहर करने के लिए, इस आधार पर कि किस जॉबटाइटल का चयन किया गया है, निम्नलिखित की तरह कुछ करें

SELECT * FROM careers WHERE title NOT REGEXP (SELECT regexMatch FROM careers WHERE title = "Tax Accountant")
0
user1898027 23 मार्च 2017, 16:32
मुझे यकीन नहीं है कि आपका क्या मतलब है, इसमें "कर लेखाकार" भी शामिल नहीं होना चाहिए
 – 
user1898027
23 मार्च 2017, 16:15
उदाहरण के लिए: चुनें * करियर से जहां शीर्षक REGEXP नहीं है 'कर लेखाकार' यह अभी भी "लेखाकार" और "फोरेंसिक लेखाकार" प्राप्त करता है
 – 
Agrus
23 मार्च 2017, 16:19
हाँ क्योंकि खाता और फोरेंसिक लेखाकार "कर लेखाकार" से मेल नहीं खाता। यदि आपके पास "कर लेखाकार" है और आप केवल लेखाकार के साथ सभी परिणामों को बाहर करना चाहते हैं तो मुझे यह जानना होगा कि यह किस संदर्भ में है। आप "कर लेखाकार" का प्रयास क्यों करते हैं?
 – 
user1898027
23 मार्च 2017, 16:25
क्योंकि एक उपयोगकर्ता "लेखाकार" के बजाय एक यूआई "कर लेखाकार" के माध्यम से चयन कर सकता है, इसलिए, "लेखाकार" और "फोरेंसिक लेखाकार" को परिणाम से बाहर रखा जाना चाहिए
 – 
Agrus
23 मार्च 2017, 16:28
ठीक है, तो मैं डेटाबेस में एक अतिरिक्त कॉलम जोड़ूंगा, जहां आप रेगेक्स डालते हैं, आप चाहते हैं कि विशिष्ट कैरर बाहर हो जाए। फिर आप मेरे द्वारा इस उत्तर में जोड़े गए कोड का उपयोग कर सकते हैं। इसके लिए करियर में एक कॉलम जोड़ने की आवश्यकता है जिसे regexMatch कहा जाता है)
 – 
user1898027
23 मार्च 2017, 16:32