SQL Formatter & Beautifier
วาง query ที่ยุ่งเหยิงแล้วรับ SQL ที่สะอาดและเยื้องอย่างสม่ำเสมอ รองรับ 17 dialect การปรับตัวพิมพ์คีย์เวิร์ด และการย่อในคลิกเดียว ทั้งหมดในเบราว์เซอร์ของคุณ
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
วิธีใช้ SQL Formatter
- วางคำสั่ง SQL หนึ่งคำสั่งหรือมากกว่าลงในช่องข้อมูลขาเข้า หรือเปิดไฟล์
.sql - เลือก dialect ของฐานข้อมูล เพื่อให้พาร์สไวยากรณ์เฉพาะ เช่น การแคสต์ด้วย
::,[brackets], backtick หรือสตริง$$ได้ถูกต้อง - ตั้งค่าตัวพิมพ์คีย์เวิร์ด (UPPER, lower หรือคงเดิม) การเยื้อง และจำนวนบรรทัดว่างระหว่างคำสั่ง
- สลับไปที่ ย่อ เพื่อตัดคอมเมนต์และช่องว่างสำหรับ log, ORM หรือพารามิเตอร์ใน URL
- คัดลอกผลลัพธ์หรือดาวน์โหลดเป็นไฟล์
.sql
ทำไมต้องจัดรูปแบบ SQL?
query ที่คัดลอกจาก log ของ ORM, query plan หรือโค้ดแอปพลิเคชันมักมาเป็นบรรทัดยาวบรรทัดเดียว การวางแต่ละ clause (SELECT, FROM, JOIN, WHERE, GROUP BY) ไว้คนละบรรทัดและเยื้องคอลัมน์และเงื่อนไขทำให้อ่าน logic ได้ง่าย ยังทำให้ diff ในการรีวิวโค้ดเล็กลง และช่วยให้คุณเห็นเงื่อนไข join ที่หายไปหรือ OR ที่วางผิดตำแหน่ง
แนวทางสไตล์ SQL
- คีย์เวิร์ดตัวพิมพ์ใหญ่ (
SELECT,WHERE) แยกไวยากรณ์ SQL ออกจากชื่อตารางและคอลัมน์ style guide ส่วนใหญ่แนะนำแบบนี้ แม้ตัวพิมพ์เล็กจะนิยมในทีม dbt และ analytics - หนึ่งคอลัมน์ต่อบรรทัด ทำให้การเพิ่มหรือลบคอลัมน์เป็น diff เพียงบรรทัดเดียว
- การเยื้องที่สม่ำเสมอ (2 หรือ 4 ช่องว่าง) ภายใน clause และ subquery แสดงการซ้อนให้เห็นในพริบตา
- ตัวปิดคำสั่ง: ปิดทุกคำสั่งด้วย
;เพื่อให้สคริปต์ที่มีหลายคำสั่งไม่กำกวม
SQL dialect ที่รองรับ
Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server (T-SQL), Oracle PL/SQL, Google BigQuery, Snowflake, Amazon Redshift, Spark SQL, Trino/Presto, Hive, IBM Db2, Couchbase N1QL, SingleStore และ TiDB หาก query พาร์สไม่ผ่าน ให้ลอง dialect ที่เจาะจงกว่า: @variables, พารามิเตอร์ $1 และ operator เฉพาะของผู้ผลิตจะรู้จักเฉพาะใน dialect ของตัวเอง
ตัวย่อทำอะไร
โหมดย่อจะลบคอมเมนต์ --, # และ /* */ ยุบช่องว่างและการขึ้นบรรทัดให้เหลือช่องว่างเดียว และตัดช่องว่างรอบจุลภาคและวงเล็บ string literal และ identifier ที่อยู่ในเครื่องหมายคำพูด ('…', "…", `…`, […], $$…$$) ถูกคัดลอกทุกไบต์ ความหมายของ query จึงไม่เปลี่ยน
คำถามที่พบบ่อย
SQL ของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
การจัดรูปแบบเปลี่ยนการทำงานของ query หรือไม่?
ทำไม SQL ที่ถูกต้องจึงเกิด parse error?
::type หรือ SQL Server สำหรับชื่อใน [bracketed] และ @params