Mysql Regular expression Tutorial in Hindi आज हम इस आर्टिकल के माध्यम से समझेंगे की mysql के अंदर सिलेक्ट विद रेगुलर एक्सप्रेशन क्या होता है इसे हम कैसे सिलेक्ट कमांड के साथ में यूज कर सकते हैं मान लीजिए आपके पास में एक टेबल है उस टेबल में से कोई ऐसा डाटा सर्च करना चाहते हैं jin के आखिर में कोई ऐसा नाम आ रहा है जिसका रिकॉर्ड आप एक अलग जगह पर भेजना चाहते हैं इसके लिए हम यूज करते हैं रेगुलर एक्सप्रेशन का इस लिखने का कुछ तरीका इस प्रकार है
Where name REGWXP ” KHAN$ | POOR”
मेरे पास में एक table है मैं इस टेबल के अंदर सर्च करना चाहता हूं कि जिस कॉलम के अंदर मेरे पास में name नाम का एक कॉलम है उसमें जितने भी डाटा है उसमें जो नाम लिखे हुए हैं उनके आखिर में खान या पूर लिखा हुआ है वह डाटा मुझे शो करें यहां पर खान के लास्ट में मैंने डॉलर का साइन इसलिए लगाया है, कि यह नाम वर्ड के लास्ट में हो तो इस तरह के ऑपरेटर की लिस्ट है जो कि हम इस कमांड के साथ में ही यूज करते हैं
- ‘^ra’ =इसका मतलब है शुरुआत में ra उसे हमें ढूंढना है
- ‘am$’ = इसका मतलब है की लास्ट में am होना चाहिए।
- ‘[Ams]’ = इसका मतलब है हर लेटर को अलग अलग अलग खोजना है और पहले a फिर m फिर s जिसमे ये मिले वो डाटा दिखाए।
- ‘^[ams]’ = इसका मतलब है की शुरुआत या तो a या m या फिर s हो वो नाम दिखाए।
- ‘[A-h]e’ = इसका मतलब है की a से h में बिच में नाम की शुरुआत और दूसरा लेटर e है वो डाटा दिखाए।
- ‘Tom | doc | ok’ = इसका मतलब है की जितने भी डाटा है नाम है इस कॉलम के अंदर जहाँ ये नाम मिल रहे है वो डाटा दिखाए।
और इसका लिखने का सिंटेक्स कुछ इस प्रकार है
Select col1, col2, col3 From tablename where colname REGEXP PATTERN;
सबसे पहले मैंने सिलेक्ट लिखा है उसके बाद में कॉलम का नाम लिखा है अगर आप पूरी टेबल का डाटा देखना चाहते हैं तो * लगा सकते हैं या फिर किसी एक या दो कॉलम का डाटा देखना चाहते हैं तो उस कॉलम का नाम यहां पर लिख सकते हैं उसके बाद में From लिखकर टेबल का नाम देना है फिर where लिखकर कॉलम का नाम देना है जिस कॉलम के अंदर आप डाटा को सर्च करना चाहते हैं उसके बाद में यह कीवर्ड लेना है उसके बाद में आपको पैटर्न देना है जो कि हमने अभी ऊपर 5-6 पैटर्न के बारे में समझा था
select * from delhi where name regexp ‘ra’;
यहां पर मैंने सर्च किया है आर ए से शुरू होने वाले जितने भी वर्ड है उनका नाम मुझे यहां पर दिखाएं तो इसमें मुझे पूरा डाटा दिखा दिया है अगर आप इस तरीके से बीच में कुछ और नाम दे देते हैं तो वह वही नाम ढूंढेगा जिसके बीच में आप जो सर्च कर रहे हैं वह नाम आ रहा है
और यह ese सर्च नहीं करता है कि शुरुआत में या लास्ट में balki यह आप इस कॉलम के अंदर जितने data नाम लिखा हुआ है उस नाम के अंदर जहां भी यह साथ में ra नाम आ रहा है उससे आपको रिजल्ट दिखाएगा
यानी कि मेरे कहने का मतलब है शुरुआत में या लास्ट में या बीच में कहीं भी अगर यह जो आप सर्च कर रहे हैं वह नाम इसको मिल रहा है वह रिजल्ट आपको शो करके देगा और यही काम हमने पिछले आर्टिकल में सीखा था like ऑपरेटर का यूज करके बल्कि उसमें नाम के पीछे हमें परसेंटेज का साइन लगाना पड़ता था
इससे आपका यह काम or आसान हो गया कि इसमें हमें परसेंटेज का साइन नहीं लगाना पड़ता है इस तरीके से हम अपनी दूसरी कमांड भी यूज़ करके देखते हैं
select * from delhi where name regexp ‘^ra’;
अब यह क्या करेगा जहां भी word की शुरुआत में यानी कि नाम की जहाँ शुरुआत हो रही है वहां पर आ रहे अगर ra हैं तो वही रिजल्ट यहां पर दिखाएगा अगर बीच में या लास्ट में कहीं पर ra आ रहा है तो उस रिजल्ट को यह शो नहीं करेगा इस तरीके से अगर हमें लास्ट का नाम चेक करना है तो इसके लिए हम डॉलर के साइन का यूज करते हैं जो कि लिखने का तरीका निम्न प्रकार है आप नीचे कमांड में देख सकते हैं।
select * from delhi where name regexp ‘ra$’;
और आप इसे नोट ऑपरेटर के साथ भी यूज कर सकते हैं अब यह वही डाटा दिखाएगा जिसके आखिर में यह नाम नहीं आ रहा है
select * from delhi where name not regexp ‘er$’;
अगर हमें एक ही बार में एक से ज्यादा word को सर्च करवाना है तो इसके लिए हम पाई ऑपरेटर का यूज करते हैं जो कि लिखने का तरीका निम्न प्रकार है
select * from delhi where name regexp ‘er|aj|ta’;
अब इसने यहां पर किया क्या मैंने यह पाई का साइन यूज़ करके तीन नाम लिया है और इस कॉलम के अंदर जितने भी नाम है उन सभी नाम के अंदर अगर यह लेटर मैच हो रहे हैं भले आगे या पीछे या फिर बीच में कहीं भी मैच हो रहे हैं वह रिजल्ट आपको यहां पर शो करेगा। और एक बात आपको ध्यान रखना है आपको बीच में स्पेस नहीं देनी है अगर आप स्पेस देंगे तो यह काम नहीं करेगा
select * from delhi where name regexp ‘^er|aj|^ta’;
आप यहां पर इस कमांड को देख सकते हैं तो अब यह करेगा क्या जहां पर शुरुआत में ही er आ रहा है और बीच में कहीं भी aj आ रहा है और शुरुआत में टीए आ रहा है वही नाम हमें शो करेगा तो आप इस तरीके से भी लिख सकते हैंऔर आप इस तरीके से भी लिख सकते हैं
select * from delhi where name regexp ‘^er|aj|ta$’;
यह आपको वह रिजल्ट दिखाएगा जहाँ शुरुआत ra से हो रही हो और बीच में कहीं भी aj आ रहा हो और लास्ट में टीए आ रहा हो वह रिजल्ट आपको सो कर देगा। और यह जरूरी नहीं है कि आप 3 वर्ड या चार वर्ड ही यूज़ करें आप जितनी मर्जी है उतने वर्ड पाई का साइन यूज़ करके लगा सकते हैं और उसमें अपने डेटा को सर्च कर सकते हैं
select * from delhi where name regexp ‘[vrm]’;
जब हम इसे इसकेयर ब्रैकेट्स के अंदर ले लेते हैं तो यह करता क्या है कि इसके अंदर हम जितने भी लेटर देते हैं उसको अलग-अलग सर्च करता है एक साथ में सर्च नहीं करता है जैसे कि मैंने यहां पर 3 लेटर दिया है तो पहले एक को सर्च करेगा उसका रिजल्ट शो कर देगा उसके बाद में दूसरे को सर्च करेगा उसका रिजल्ट शो कर देगा उसके बाद में तीसरे को सर्च करेगा और इस तरीके से मिलाकर तीनों का रिजल्ट आपको सो कर देगा।
और यही काम हम लाइक ऑपरेटर से कर सकते थे लेकिन उसमें और इसमें डिफरेंस यह है कि उसमें हमें बार-बार ORऑपरेटर का यूज करना पड़ता था लेकिन इसमें हम इकट्ठा लिख सकते हैं
select * from delhi where name regexp ‘[vrm]a’;
आप इससे इस तरीके से भी लिख सकते हैं लेकिन यह करता क्या है कि यह दो दो लेटर का एक वर्ड बनाता है साथ में पहले एक के साथ जो इसकेयर ब्रैकेट्स के अंदर है उसको उठाएगा और जो बाहर है उससे आपस में मिल आएगा उसके बाद में फिर से स्क्वेयर ब्रैकेट्स के अंदर आएगा और इसके अंदर से बिच वाला लेटर है उसमे बाहर वाले लेटर से आपस में जोड़ी बनाएंगे फिर दोबारा स्क्वेयर ब्रैकेट्स के अंदर आएगा और इसमें फिर इस बाहर वाले की आपस में जोड़ी बनाएगा इस तरीके से जहां भी इसे यह जो आपस में मिल रहे हैं इस तरह की जहां भी जोड़ी मिल रही है उनको आप एक साथ में देख सकते हैं।
select * from delhi where name regexp ‘^[vrm]’;
आप इन्हें इस तरीके से भी लिख सकते हैं यह करता क्या है जहां भी वर्ल्ड की शुरुआत है जो हमने लेटर लिए हैं इसके बीच में अलग-अलग चेक करेगा इसको भी जहाँ भी इन लेटर्स से शुरुआत हो रही है उसका रिजल्ट आपको देगा।
इस तरीके से आप लास्ट में भी इन्हें सर्च कर सकते हैं आपको करना क्या है [] के बाहर यानी कि पीछे आपको डॉलर का साइन यूज़ करना है कुछ इस तरीके से जो कि आप नीचे कमांड में देख सकते हैं।
select * from delhi where name regexp ‘[vrm]$’;
select * from delhi where name regexp ‘a[vrm]’;
इसमें किया क्या जो बाहर वाला लेटर है उसको उठाकर अंदर वाली लेटर से आपस में अलग-अलग को एक जोड़ी बनाई है जहां भी यह जोड़ी मिल रही है उसका रिजल्ट आपको सो कर देगा।
select * from delhi where name regexp ‘[a-m]a’;
Mysql Regular expression Tutorial in Hindi