टूल
गाइड

SQL फ़ॉर्मेटर

फ़ॉर्मेट

sql-formatter से कई बोलियों (MySQL, PostgreSQL, T-SQL आदि) के SQL को फ़ॉर्मेट या मिनिफ़ाई करें।

100% क्लाइंट-साइड कोई बैकएंड नहीं
SQL
आउटपुट
इस पृष्ठ पर

SQL फ़ॉर्मेटर क्या है?#

एक SQL फ़ॉर्मेटर एक ऐसी क्वेरी को — जो इंजिन के लिए लिखी गई थी, अक्सर एक ही पंक्ति पर ठसाठस, या किसी लॉग से यादृच्छिक इंडेंटेशन के साथ चिपकाई गई — इंसान के लिए लिखी गई क्वेरी में बदलता है। कीवर्ड्स अपनी पंक्तियों पर जाते हैं, कॉलम संरेखित होते हैं, सबक्वेरीज़ एक स्तर भीतर आती हैं, और पाँच AND शर्तों वाला एक WHERE क्लॉज़ टेक्स्ट की दीवार होना बंद कर देता है। उल्टी क्रिया, संक्षिप्त करना, तब उस सब व्हाइटस्पेस को वापस एक पंक्ति पर सिकोड़ता है जब किसी क्वेरी को किसी कॉन्फ़िग फ़ाइल या API पैरामीटर के ज़रिए यात्रा करना हो।

SQL फ़ॉर्मेटिंग को उलझा बनाने वाली बात यह है कि हर डेटाबेस का अपना डायलेक्ट होता है। RETURNING वाली एक Postgres क्वेरी, बैकटिक-कोटेड आइडेंटिफ़ायर वाली एक MySQL क्वेरी, TOP (n) वाली एक SQL Server क्वेरी, और स्ट्रक्ट तथा ऐरे लिटरल्स वाली एक BigQuery क्वेरी सब अलग दिखती हैं, और ऐसा फ़ॉर्मेटर जो दिखावा करता है कि एक सार्वभौमिक SQL है वह किनारे के मामलों को सूक्ष्म रूप से गलत कर देता है। यह पेज इसे sql-formatter के साथ स्पष्ट डायलेक्ट चयन द्वारा संभालता है: standard SQL, MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2 और Trino। आप वह चुनते हैं जो आपका डेटाबेस वास्तव में बोलता है, और फ़ॉर्मेटर उसी के अनुसार पार्स करता है।

इसका उपयोग कैसे करें#

  1. अपनी क्वेरी बाईं ओर SQL पैनल में चिपकाएँ, या एक छोटा उदाहरण लोड करने के लिए नमूना पर क्लिक करें।
  2. टूलबार पर कोई भाषा चुनें — आपके डेटाबेस का डायलेक्ट। डिफ़ॉल्ट sql एक सुरक्षित सामान्य फ़्लेवर है; जब क्वेरी डायलेक्ट-विशिष्ट सिंटैक्स उपयोग करती हो तब postgresql, mysql, tsql इत्यादि पर स्विच करें।
  3. कोई इंडेंट चुनें: 2, 4, या टैब। चार स्पेस SQL के लिए आम हैं क्योंकि यह लंबी कॉलम सूचियों को पढ़ने योग्य रखते हैं।
  4. कोई क्रिया चुनें:
    • फ़ॉर्मेट — पुनः-इंडेंट, क्वेरी को तार्किक पंक्तियों पर तोड़ें, और डिफ़ॉल्ट रूप से कीवर्ड्स को अपरकेस करें ताकि SELECT, FROM और WHERE आइडेंटिफ़ायर्स से अलग दिखें।
    • संक्षिप्त-- लाइन कमेंट्स और /* */ ब्लॉक कमेंट्स हटाएँ, फिर हर व्हाइटस्पेस समूह को एकल स्पेस तक सिकोड़ें। न्यूलाइन्स स्पेस बन जाती हैं, जो SQL के लिए सुरक्षित है क्योंकि कथन सेमीकॉलन पर समाप्त होते हैं, न्यूलाइन पर नहीं।
  5. परिणाम आउटपुट पैनल में पढ़ें। उसे लेने के लिए कॉपी का उपयोग करें; साफ़ करें दोनों पैनलों को रीसेट करता है।

प्रमुख विशेषताएँ#

  • बारह डायलेक्ट। MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2, Trino, साथ ही सामान्य standard SQL। फ़ॉर्मेटर का व्याकरण मेल खाने के लिए बदलता है, इसलिए डायलेक्ट-विशिष्ट कीवर्ड्स सही ढंग से स्थित होते हैं।
  • कीवर्ड केसिंग। फ़ॉर्मेट डिफ़ॉल्ट रूप से कीवर्ड्स को अपरकेस करता है (तो select SELECT बन जाता है) और आपके आइडेंटिफ़ायर्स को वैसे ही छोड़ता है। यह विशुद्ध रूप से कॉस्मेटिक है और कभी नहीं बदलता कि क्वेरी क्या करती है।
  • सुरक्षित संक्षिप्त। व्हाइटस्पेस एकल स्पेसेस में सिकुड़ती है; SQL सेमीकॉलन-समाप्त होता है, इसलिए पंक्तियाँ जोड़ना दो कथनों को ऐसे नहीं जोड़ सकता जैसे न्यूलाइन-संवेदनशील भाषाओं में।
  • संक्षिप्त पर कमेंट स्ट्रिपिंग। संक्षिप्त करने पर -- और /* */ दोनों कमेंट्स हटाए जाते हैं, पेलोड को कसने में मदद करते हुए।
  • दो-पैनल, कॉपी-तैयार, पूरी तरह क्लाइंट-साइड। फ़ॉर्मेटर आपके ब्राउज़र में चलता है; क्वेरी कहीं नहीं भेजी जाती।

कार्य उदाहरण#

एक रिपोर्टिंग क्वेरी जो एक पंक्ति पर डंप की गई, एक कमेंट, एक जॉइन, और एक GROUP BY के साथ:

इनपुट:

select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc

भाषा के रूप में postgresql चुनें, फिर 2 स्पेस के साथ फ़ॉर्मेट पर क्लिक करें:

SELECT
  u.id,
  u.name,
  count(o.id) AS orders
FROM
  users u
  JOIN orders o ON o.user_id = u.id
WHERE
  u.status = 'active'
  AND o.created_at >= '2026-01-01'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC

हर क्लॉज की अब अपनी पंक्ति है, जॉइन शर्त दृश्य है, और दोनों WHERE प्रेडिकेट्स अलग हैं ताकि आप एक नज़र में बता सकें कि तिथि फ़िल्टर >= है, > नहीं। कीवर्ड केसिंग अपरकेस में चली गई जबकि कॉलम नाम बिलकुल वैसे ही रहे जैसे लिखे गए। उसी इनपुट पर संक्षिप्त पर क्लिक करें और आपको एक-पंक्ति रूप वापस मिलता है, किसी कॉन्फ़िग या ?query= पैरामीटर में चिपकाने के लिए तैयार:

select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc

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

मुझे कौन सा डायलेक्ट चुनना चाहिए?#

अपने डेटाबेस से मिलान करें। यदि आप अनिश्चित हैं तो सामान्य sql एक उचित शुरुआती बिंदु है और आम क्लॉज़ों को सही ढंग से संभालता है। किसी विशिष्ट डायलेक्ट पर तब स्विच करें जब क्वेरी ऐसा सिंटैक्स उपयोग करती हो जो सामान्य व्याकरण अपेक्षा नहीं करता — RETURNING (Postgres), बैकटिक आइडेंटिफ़ायर (MySQL), TOP (n) (T-SQL), या स्ट्रक्ट/ऐरे लिटरल्स (BigQuery)। ग़लत डायलेक्ट चुनना आमतौर पर फिर भी फ़ॉर्मेट करता है, पर किसी अनोखे कीवर्ड को गलत जगह दे सकता है।

फ़ॉर्मेट कीवर्ड्स को अपरकेस क्यों करता है पर मेरे कॉलम नामों को नहीं?#

क्योंकि कीवर्ड्स को अपरकेस करना एक पठनीयता परिपाटी है जो कभी अर्थ नहीं बदलती — SELECT और select इंजिन के लिए समान हैं — जबकि आपके आइडेंटिफ़ायर्स केस-सेंसिटिव हो सकते हैं (Postgres बिना-कोट आइडेंटिफ़ायर्स को लोअरकेस में मोड़ता है; MySQL कुछ प्लेटफ़ॉर्मों पर केस-सेंसिटिव है)। आइडेंटिफ़ायर्स को वैसे ही छोड़ना सुरक्षित डिफ़ॉल्ट है। यदि आप लोअरकेस कीवर्ड्स पसंद करते हैं तो क्वेरी फ़ॉर्मेट करें और फिर एक हाथ से पास करें।

क्या संक्षिप्त मल्टी-स्टेटमेंट स्क्रिप्ट्स सुरक्षित रखता है?#

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

क्या मेरी क्वेरी कहीं अपलोड होती है?#

नहीं। फ़ॉर्मेटर पेज में बंडल है और आपके ब्राउज़र में स्थानीय रूप से चलता है। आपके SQL के बारे में कुछ भी — न टेबल नाम, न लिटरल्स — टैब से बाहर नहीं जाता।