SQL Academy · पाठ

ऐरे के भीतर खोजना

ANY, contains और overlap ऑपरेटर।

पाठ 2, कुल 4 में से13 चरण

ऐरे के भीतर खोजना, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

ऐरे कई मान संग्रहीत करते हैं

PostgreSQL में एक ऐरे कॉलम एक ही सेल में कई मान रखता है। ऐरे के अंदर खोजने से पहले यह देखना उपयोगी है कि वे कैसे दिखाई देते हैं।

नीचे दी गई क्वेरी एक ऐसी तालिका बनाती है जिसमें प्रत्येक उत्पाद कई श्रेणियों से संबंधित हो सकता है और ये श्रेणियाँ पाठ वाले ऐरे के रूप में संग्रहीत होती हैं।

CREATE TABLE products (
  id      SERIAL PRIMARY KEY,
  name    TEXT,
  tags    TEXT[]
);

INSERT INTO products (name, tags) VALUES
  ('Laptop',     ARRAY['electronics', 'computers', 'sale']),
  ('T-Shirt',    ARRAY['clothing', 'summer', 'sale']),
  ('Coffee Mug', ARRAY['kitchen', 'gifts']),
  ('Headphones', ARRAY['electronics', 'audio']),
  ('Notebook',   ARRAY['stationery', 'office']);

ANY से सदस्यता जाँचना

ANY ऑपरेटर आपको यह जाँचने देता है कि कोई मान ऐरे में कहीं भी मौजूद है या नहीं। इसका सिंटैक्स है: value = ANY(array_column)।

यह क्वेरी इलेक्ट्रॉनिक्स टैग वाले प्रत्येक उत्पाद को खोजती है।

SELECT name, tags
FROM products
WHERE 'electronics' = ANY(tags);

ANY केवल पाठ के लिए नहीं है

ANY ऐसे किसी भी डेटा प्रकार के साथ काम करता है जो समानता का समर्थन करता है। यहाँ अंकों की एक तालिका है जिन्हें पूर्णांक ऐरे के रूप में संग्रहीत किया गया है। क्वेरी उन विद्यार्थियों को प्राप्त करती है जिन्होंने कम-से-कम एक परीक्षण में 100 का पूर्ण अंक प्राप्त किया।

CREATE TABLE students (
  student TEXT,
  scores  INT[]
);

INSERT INTO students VALUES
  ('Alice', ARRAY[88, 95, 100]),
  ('Bob',   ARRAY[70, 80, 90]),
  ('Carol', ARRAY[100, 100, 99]);

SELECT student, scores
FROM students
WHERE 100 = ANY(scores);

NOT + ANY से पंक्तियाँ बाहर करना

किसी ऐरे में कोई मान मौजूद नहीं होने वाली पंक्तियाँ खोजने के लिए NOT को ANY के साथ मिलाएँ। ध्यान दें कि value <> ANY(arr) का अर्थ अलग है — यदि कोई भी तत्व अलग हो, तो यह true लौटाता है, जो लगभग हमेशा true होता है।

विश्वसनीय बहिष्करण जाँच के लिए NOT (value = ANY(arr)) का उपयोग करें।

-- Find products that are NOT tagged as 'sale'
SELECT name, tags
FROM products
WHERE NOT ('sale' = ANY(tags));

समाहित करने वाला ऑपरेटर @>

@> ऑपरेटर जाँचता है कि एक ऐरे दूसरे ऐरे के सभी तत्वों को समाहित करता है या नहीं। इसे इस तरह समझें: क्या बायाँ ऐरे दाईं ओर सूचीबद्ध प्रत्येक तत्व को शामिल करता है?

यह उन उत्पादों को खोजता है जिनमें इलेक्ट्रॉनिक्स और बिक्री, दोनों टैग हैं।

SELECT name, tags
FROM products
WHERE tags @> ARRAY['electronics', 'sale'];

द्वारा-समाहित ऑपरेटर <@

<@ ऑपरेटर @> का उलटा है। यह जाँचता है कि बायाँ ऐरे पूरी तरह से दाएँ ऐरे के अंदर समाहित है या नहीं।

यह क्वेरी उन उत्पादों को खोजती है जिनकी पूरी टैग-सूची इलेक्ट्रॉनिक्स, कंप्यूटर और बिक्री के समुच्चय का उपसमुच्चय है।

SELECT name, tags
FROM products
WHERE tags <@ ARRAY['electronics', 'computers', 'sale'];

अतिव्यापन ऑपरेटर &&

&& ऑपरेटर तब true लौटाता है जब दो ऐरे में कम-से-कम एक समान तत्व हो। यह पूछने के बराबर है कि क्या इन दो सूचियों में कुछ समान है।

नीचे दी गई क्वेरी उन उत्पादों को खोजती है जिनका किसी दी गई खरीदारी-सूची के साथ कम-से-कम एक टैग समान है।

SELECT name, tags
FROM products
WHERE tags && ARRAY['audio', 'summer', 'gifts'];

अतिव्यापन बनाम समावेशन — मुख्य अंतर

@> और && को आपस में मिला देना आसान है। यहाँ स्पष्ट तुलना दी गई है:

  • tags @> ARRAY['a','b'] — पंक्ति में 'a' और 'b', दोनों होने चाहिए।
  • tags && ARRAY['a','b'] — पंक्ति में 'a' या 'b' में से कम-से-कम एक होना चाहिए।
-- Contains: must have BOTH 'electronics' AND 'sale'
SELECT name FROM products WHERE tags @> ARRAY['electronics', 'sale'];

-- Overlap: must have AT LEAST ONE of 'electronics' or 'sale'
SELECT name FROM products WHERE tags && ARRAY['electronics', 'sale'];

array_length से आकार के अनुसार फ़िल्टर करना

कभी-कभी आप ऐसी पंक्तियाँ खोजना चाहते हैं जिनके ऐरे में निश्चित संख्या में तत्व हों। array_length(arr, 1) पहले आयाम में तत्वों की संख्या लौटाता है।

यह क्वेरी ठीक तीन टैग वाले उत्पादों को खोजती है।

SELECT name, tags
FROM products
WHERE array_length(tags, 1) = 3;

ऐरे खोजों को अन्य शर्तों के साथ मिलाना

ऐरे ऑपरेटर सामान्य SQL शर्तों के साथ काम करते हैं। सटीक फ़िल्टर बनाने के लिए आप उन्हें AND, OR और WHERE की किसी भी अन्य शर्त के साथ मिला सकते हैं।

-- Products tagged 'sale' AND whose name starts with a letter before 'N'
SELECT name, tags
FROM products
WHERE 'sale' = ANY(tags)
  AND name < 'N'
ORDER BY name;

गति के लिए ऐरे पर अनुक्रमणिका बनाना

बड़ी तालिकाओं में अनुक्रमणिका के बिना ऐरे की खोज धीमी हो सकती है। PostgreSQL की GIN (सामान्यीकृत उलटी अनुक्रमणिका) अनुक्रमणिका ऐरे कॉलमों के लिए बनाई गई है और @>, <@ तथा && ऑपरेटरों का कुशलतापूर्वक समर्थन करती है।

ANY सीधे GIN अनुक्रमणिका का उपयोग नहीं करता, लेकिन अतिव्यापन और समावेशन वाले ऑपरेटर करते हैं।

-- Create a GIN index on the tags array column
CREATE INDEX idx_products_tags ON products USING GIN (tags);

-- This query can now use the index
SELECT name FROM products WHERE tags @> ARRAY['electronics'];

त्वरित जाँच: ऐरे ऑपरेटर

PostgreSQL के ऐरे खोज ऑपरेटरों की अपनी समझ का परीक्षण करें।

पाठ का पुनरावलोकन

इस पाठ में आपने PostgreSQL ऐरे के अंदर खोजने के तीन मुख्य तरीके सीखे:

  • = ANY(arr) — जाँचता है कि कोई एकल मान ऐरे में कहीं भी मौजूद है या नहीं।
  • @> (समाहित करता है) — जाँचता है कि ऐरे में निर्दिष्ट सभी तत्व शामिल हैं या नहीं।
  • && (अतिव्यापन) — जाँचता है कि ऐरे का दूसरे ऐरे के साथ कम-से-कम एक तत्व समान है या नहीं।

आपने उलटी समावेशन-जाँच के लिए <@, आकार के आधार पर फ़िल्टर करने के लिए array_length और बड़े डेटा-समुच्चयों पर ऐरे की खोज तेज़ करने के लिए GIN अनुक्रमणिका भी देखी। इन ऑपरेटरों को मानक WHERE शर्तों के साथ मिलाने से आपको बहु-मूल्य वाले डेटा पर सटीक और अभिव्यंजक नियंत्रण मिलता है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
46
पाठ
183

अक्सर पूछे जाने वाले प्रश्न

क्या “ऐरे के भीतर खोजना” पाठ निःशुल्क है?

हाँ—“ऐरे के भीतर खोजना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“ऐरे के भीतर खोजना” में मैं क्या सीखूँगा?

ANY, contains और overlap ऑपरेटर। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“ऐरे के भीतर खोजना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. ऐरे कॉलम की मूल बातें
  2. ऐरे के भीतर खोजना
  3. UNNEST और एग्रीगेट करना
  4. ऐरे बनाम सामान्यीकृत तालिकाएँ
← SQL Academy पर वापस जाएँ