Định dạng SQL API

Trình bày câu lệnh SQL với thụt lề thống nhất, từ khoá viết hoa cho MySQL, PostgreSQL, SQL Server, Oracle, BigQuery… hoặc thu gọn trên một dòng.

POSTGEThttps://apibox.io.vn/v1/sql-format
Tiện ích lập trình▶ Dùng thử online

API định dạng SQL viết lại câu truy vấn mỗi mệnh đề một dòng, danh sách cột và phép JOIN được thụt lề, từ khoá, kiểu dữ liệu và hàm được viết hoa hoặc thường thống nhất (keyword_case upper, lower hoặc preserve). Chọn dialect để cú pháp được hiểu đúng: mysql, mariadb, postgresql, sqlite, tsql (SQL Server), plsql (Oracle), bigquery, snowflake, redshift, spark, db2, trino, clickhouse hoặc sql chuẩn.

Tinh chỉnh bố cục với indent (1–8 dấu cách) hoặc tabs=true, expression_width (độ dài tối đa của biểu thức trong ngoặc trên một dòng), logical_operator_newline (before hoặc after AND / OR) và lines_between_queries cho script nhiều câu lệnh. Chuỗi ký tự và comment được giữ nguyên.

minify=true làm ngược lại: bỏ comment và gộp khoảng trắng bên ngoài dấu nháy, tiện cho log hay chuỗi cấu hình. Câu lệnh không phân tích được sẽ trả lỗi invalid_sql kèm vị trí lỗi.

Tham số

TênVị tríKiểuBắt buộcMặc định
sqlbody|querystringcóCâu lệnh SQL (tối đa 500.000 ký tự).
dialectbody|querystringkhôngsqlsql, mysql, mariadb, postgresql, sqlite, tsql, plsql, bigquery, snowflake, redshift, spark, db2, trino, clickhouse.
keyword_casebody|querystringkhôngupperupper, lower hoặc preserve.
indentbody|querynumberkhông2Số dấu cách mỗi cấp (1–8).
tabsbody|querybooleankhôngfalseThụt lề bằng tab.
expression_widthbody|querynumberkhông50Độ rộng tối đa của biểu thức trong ngoặc trên một dòng (20–200).
logical_operator_newlinebody|querystringkhôngbeforeXuống dòng before (trước) hoặc after (sau) AND / OR.
lines_between_queriesbody|querynumberkhông1Số dòng trống giữa các câu lệnh (0–5).
minifybody|querybooleankhôngfalseThu gọn SQL thay vì định dạng.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/sql-format" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sql":"select u.id, u.name, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.city = '\''Hà Nội'\'' and o.total > 100000 group by u.id, u.name order by orders desc limit 10","dialect":"postgresql"}'

Kết quả trả về

{
  "dialect": "postgresql",
  "formatted": "SELECT\n  u.id,\n  u.name,\n  COUNT(o.id) AS orders\nFROM\n  users u\n  LEFT JOIN orders o ON o.user_id = u.id\nWHERE\n  u.city = 'Hà Nội'\n  AND o.total > 100000\nGROUP BY\n  u.id,\n  u.name\nORDER BY\n  orders DESC\nLIMIT\n  10",
  "statements": 1,
  "length": {
    "input": 191,
    "output": 213
  }
}

Ứng dụng

  • SQL dễ đọc khi review code và viết tài liệu
  • Chuẩn hoá câu truy vấn trước khi lưu vào kho mã
  • Định dạng truy vấn lấy từ slow query log
  • Thu gọn SQL để ghi log, đưa vào file cấu hình

Hỏi đáp

API có kiểm tra SQL đúng không?

Chỉ kiểm tra cú pháp ở mức cần cho việc định dạng; tên bảng, tên cột không được đối chiếu với cơ sở dữ liệu.

Comment có được giữ không?

Có khi định dạng. minify=true sẽ xoá comment.

Nên chọn dialect nào?

Đúng hệ quản trị CSDL bạn dùng; điều này ảnh hưởng tới cách đặt tên trong backtick, [ngoặc vuông] và các từ khoá riêng. sql dùng được cho truy vấn chuẩn.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →