SQL साक्षात्कार की तैयारी · पाठ

स्ट्रिंग का विश्लेषण और फ़ॉर्मैटिंग

विभिन्न डायलेक्ट में SUBSTRING, स्थान, विभाजन और अक्षर-रूपांतरण

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

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

स्ट्रिंग फ़ंक्शन के बारे में क्यों पूछा जाता है

वास्तविक डेटा अक्सर अव्यवस्थित होता है: पूरे नामों को अलग करना पड़ सकता है, ईमेल डोमेन निकालने पड़ सकते हैं, पहचान-संकेतों में छिपे कोड ढूँढने पड़ सकते हैं और बड़े-छोटे अक्षरों का रूप एकसमान करना पड़ सकता है। साक्षात्कारकर्ता स्ट्रिंग में बदलाव से यह देखते हैं कि आप पाठ को किसी स्क्रिप्ट में भेजे बिना उसे साफ़ करके नया रूप दे सकते हैं या नहीं।

तारीखों की तरह ही, इन फ़ंक्शनों का मानकीकरण सीमित है। इसलिए लक्ष्य है अवधारणा और उसके सामान्य रूपों को समझना।

  • पाठ का अंश निकालना और स्थिति ढूँढना
  • पाठों को जोड़ना
  • पाठ को विभाजित करना और बदलना
  • अक्षर-रूप बदलना और अतिरिक्त रिक्त स्थान हटाना

SUBSTRING और स्थिति

SUBSTRING(s FROM start FOR length) SQL मानक वाला रूप है; अधिकांश प्रणालियाँ SUBSTRING(s, start, length) भी स्वीकार करती हैं। स्ट्रिंग की स्थितियाँ 1 से शुरू होती हैं। 0 से शुरू होने वाली भाषाओं के आदी प्रोग्रामरों के लिए यह एक सामान्य एक-इकाई की त्रुटि है।

POSITION(sub IN s) (या STRPOS/CHARINDEX) यह पता लगाता है कि कोई पाठ-अंश कहाँ से शुरू होता है और न मिलने पर 0 लौटाता है।

SELECT
  SUBSTRING('INV-2024-042' FROM 5 FOR 4) AS year,   -- '2024'
  POSITION('-' IN 'INV-2024-042')        AS first_dash; -- 4

ईमेल डोमेन निकालना

यह इसका एक प्रमुख उदाहरण है। @ की स्थिति ढूँढिए, फिर उसके बाद का पूरा पाठ ले लीजिए। POSITION को SUBSTRING के साथ मिलाना विभिन्न प्रणालियों में चलने वाला तरीका है।

PostgreSQL में आप SPLIT_PART(email, '@', 2) का भी उपयोग कर सकते हैं। यह अधिक साफ़ दिखाई देता है और इसी मुहावरेदार उत्तर का उल्लेख करना उपयोगी है।

-- Portable
SELECT SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM users;

-- Postgres idiom
SELECT SPLIT_PART(email, '@', 2) AS domain FROM users;

अलग-अलग SQL बोलियों में संयोजन

स्ट्रिंगों को जोड़ने का तरीका SQL बोली पर निर्भर करता है और साक्षात्कारकर्ता आपसे इसके अलग-अलग रूपों को जानने की अपेक्षा करते हैं।

  • SQL मानक / PostgreSQL / ओरेकल: || ऑपरेटर।
  • MySQL: CONCAT(a, b, c) (|| ऑपरेटर डिफ़ॉल्ट रूप से तार्किक OR होता है)।
  • एसक्यूएल सर्वर: स्ट्रिंगों के लिए + या CONCAT()।

CONCAT() NULL को खाली स्ट्रिंग मानता है, जबकि || और + में किसी भी घटक का मान NULL होने पर आम तौर पर पूरा परिणाम NULL हो जाता है। यह एक सूक्ष्म त्रुटि का स्रोत है।

-- Postgres
SELECT first_name || ' ' || last_name AS full_name FROM people;

-- MySQL / SQL Server
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM people;

NULL के साथ संयोजन की छिपी समस्या

पिछले उदाहरण को आगे बढ़ाते हुए: यदि last_name NULL है, तो PostgreSQL में first_name || ' ' || last_name NULL लौटाता है और पूरा नाम मिट जाता है।

सुरक्षित समाधान है कि जिन हिस्सों में NULL आ सकता है उन पर COALESCE लगाएँ, या CONCAT_WS का उपयोग करें। यह विभाजक के साथ संयोजन करता है, NULL मानों को छोड़ देता है और विभाजक केवल मौजूद मानों के बीच लगाता है।

-- Safe in Postgres / MySQL
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM people;

-- Or guard each part
SELECT first_name || ' ' || COALESCE(last_name, '') FROM people;

स्ट्रिंगों को विभाजित करना

“हाइफ़न से जुड़े कोड का तीसरा हिस्सा निकालिए” विभाजन की क्षमता जाँचता है। PostgreSQL का SPLIT_PART(s, delim, n) सीधे nवाँ हिस्सा लौटाता है और इसके लिए यही सबसे साफ़ साधन है।

MySQL में सीधे विभाजित करने वाला साधन नहीं है। इसका सामान्य तरीका है एक-दूसरे के भीतर SUBSTRING_INDEX लगाना: पहले शुरुआती n हिस्से लीजिए, फिर उनमें से आखिरी हिस्सा निकालिए।

-- Postgres
SELECT SPLIT_PART('a-b-c-d', '-', 3); -- 'c'

-- MySQL: third part of a-b-c-d
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a-b-c-d', '-', 3), '-', -1); -- 'c'

बदलना, अतिरिक्त स्थान हटाना और पैडिंग

साक्षात्कारकर्ता जिन सफ़ाई-संबंधी कार्रवाइयों की तुरंत अपेक्षा करते हैं:

  • REPLACE(s, from, to) सभी मौजूद आवृत्तियों को बदल देता है।
  • TRIM(s) शुरुआत और अंत के रिक्त स्थान हटाता है; TRIM(BOTH 'x' FROM s) किसी विशेष वर्ण को हटाता है।
  • LPAD(s, len, ch) / RPAD पाठ को निश्चित चौड़ाई तक भरते हैं; पहचान-संकेतों की शुरुआत में शून्य जोड़ने के लिए यह उपयोगी है।
SELECT
  REPLACE('555.123.4567', '.', '-') AS phone,   -- 555-123-4567
  TRIM('   hello   ')               AS clean,   -- 'hello'
  LPAD('42', 6, '0')                AS padded;   -- '000042'

अक्षर-रूप बदलना और लंबाई

पाठ की तुलना या उसका समूह बनाने से पहले अक्षर-रूप को एकसमान करना आवश्यक है। UPPER और LOWER लगभग हर जगह उपलब्ध हैं; INITCAP (PostgreSQL/ओरेकल) शब्दों के पहले अक्षर को बड़ा करता है।

अधिकांश प्रणालियों में LENGTH(s) वर्णों की संख्या लौटाता है, लेकिन ध्यान रखें: एसक्यूएल सर्वर में LEN() का उपयोग होता है और कुछ विन्यासों में बहु-बाइट पाठ के लिए LENGTH बाइट्स की संख्या गिनता है। गैर-ASCII डेटा के लिए इस सूक्ष्म अंतर का उल्लेख कीजिए।

SELECT
  LOWER(email)        AS email_norm,
  INITCAP(city)       AS city_pretty,  -- Postgres
  LENGTH(description)  AS chars
FROM places;

LIKE से आगे प्रतिरूप मिलान

जब LIKE पर्याप्त शक्तिशाली न हो, तो साक्षात्कारकर्ता यह देखना पसंद करते हैं कि आपको रेगुलर एक्सप्रेशन की जानकारी है या नहीं। PostgreSQL में ~ ऑपरेटर और REGEXP_REPLACE / REGEXP_MATCHES उपलब्ध हैं; MySQL में REGEXP / REGEXP_SUBSTR उपलब्ध हैं।

उदाहरण के लिए, किसी फ़ोन स्ट्रिंग से केवल अंक रखिए। रेगुलर एक्सप्रेशन से यह कई REPLACE कॉलों की शृंखला के बजाय एक ही पंक्ति में हो जाता है।

-- Postgres: strip non-digits
SELECT REGEXP_REPLACE('(555) 123-4567', '[^0-9]', '', 'g')
  AS digits; -- '5551234567'

विस्तृत उदाहरण: नामों को मानकीकृत करना और दोहराव हटाना

यह कई चरणों वाली सफ़ाई का काम है। मान लीजिए नामों में अतिरिक्त रिक्त स्थान और अलग-अलग अक्षर-रूप आते हैं, जिससे झूठे डुप्लिकेट बनते हैं। पहले उन्हें एकसमान कीजिए, फिर समूह बनाइए।

रिक्त स्थान हटाइए, रेगुलर एक्सप्रेशन से बीच के अतिरिक्त रिक्त स्थानों को एक में बदलिए और अलग-अलग मानों की गिनती करने से पहले सभी अक्षरों को छोटे रूप में बदलिए। साक्षात्कारकर्ता इसी तरह के कई चरणों वाले तर्क को महत्व देते हैं।

SELECT
  LOWER(REGEXP_REPLACE(TRIM(name), '\s+', ' ', 'g')) AS norm_name,
  COUNT(*) AS occurrences
FROM contacts
GROUP BY 1
ORDER BY occurrences DESC;

स्ट्रिंगों को संख्याओं और तारीखों में बदलना

स्ट्रिंग वाले स्तंभों में अक्सर ऐसे मान होते हैं जिन्हें संख्या या तारीख होना चाहिए। CAST(s AS INTEGER) या PostgreSQL का संक्षिप्त रूप s::int रूपांतरण करता है, लेकिन गलत इनपुट मिलने पर विफल हो जाता है।

तारीखों के लिए TO_DATE(s, 'YYYY-MM-DD') (PostgreSQL/ओरेकल) स्पष्ट प्रारूप संकेत के आधार पर पाठ को पढ़ता है। यह सबसे सुरक्षित तरीका है, क्योंकि इससे दिन और महीने के क्रम को लेकर कोई अस्पष्टता नहीं रहती।

SELECT
  CAST(qty_text AS INTEGER)            AS qty,
  TO_DATE(order_str, 'DD/MM/YYYY')     AS order_date
FROM staging;

त्वरित जाँच

स्ट्रिंगों को जोड़ते समय NULL के व्यवहार के बारे में तर्क कीजिए।

पुनरावलोकन: स्ट्रिंगों को पढ़ना और प्रारूपित करना

साक्षात्कार में याद रखने योग्य मुख्य बातें:

  • स्ट्रिंग की स्थितियाँ 1 से शुरू होती हैं; SUBSTRING और POSITION स्थान के आधार पर पाठ निकालते हैं।
  • PostgreSQL में ||, MySQL में CONCAT या एसक्यूएल सर्वर में + से संयोजन कीजिए और NULL के फैलने वाले व्यवहार को याद रखिए; CONCAT_WS को प्राथमिकता दीजिए।
  • PostgreSQL में SPLIT_PART और MySQL में एक-दूसरे के भीतर SUBSTRING_INDEX लगाकर विभाजन कीजिए।
  • REPLACE, TRIM, LPAD, UPPER/LOWER से सफ़ाई और मानकीकरण कीजिए; कठिन मामलों के लिए रेगुलर एक्सप्रेशन उपयोगी हैं।
  • झूठे डुप्लिकेट से बचने के लिए समूह बनाने से पहले अक्षर-रूप और रिक्त स्थान को एकसमान कीजिए।
शुरुआत निःशुल्क

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

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

पाठ्यक्रम
30
पाठ
120

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

क्या “स्ट्रिंग का विश्लेषण और फ़ॉर्मैटिंग” पाठ निःशुल्क है?

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

“स्ट्रिंग का विश्लेषण और फ़ॉर्मैटिंग” में मैं क्या सीखूँगा?

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

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

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

“स्ट्रिंग का विश्लेषण और फ़ॉर्मैटिंग” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. तिथि की गणना और अंतराल
  2. तिथियों को छोटा करना और समूह बनाना
  3. स्ट्रिंग का विश्लेषण और फ़ॉर्मैटिंग
  4. समय क्षेत्र और टाइमस्टैम्प
← SQL साक्षात्कार की तैयारी पर वापस जाएँ