Đị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.
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ên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
sql | body|query | string | có | Câu lệnh SQL (tối đa 500.000 ký tự). | |
dialect | body|query | string | không | sql | sql, mysql, mariadb, postgresql, sqlite, tsql, plsql, bigquery, snowflake, redshift, spark, db2, trino, clickhouse. |
keyword_case | body|query | string | không | upper | upper, lower hoặc preserve. |
indent | body|query | number | không | 2 | Số dấu cách mỗi cấp (1–8). |
tabs | body|query | boolean | không | false | Thụt lề bằng tab. |
expression_width | body|query | number | không | 50 | Độ rộng tối đa của biểu thức trong ngoặc trên một dòng (20–200). |
logical_operator_newline | body|query | string | không | before | Xuống dòng before (trước) hoặc after (sau) AND / OR. |
lines_between_queries | body|query | number | không | 1 | Số dòng trống giữa các câu lệnh (0–5). |
minify | body|query | boolean | không | false | Thu 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"}'const res = await fetch('https://apibox.io.vn/v1/sql-format', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"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"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/sql-format",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"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"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/sql-format');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"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"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));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
Tạo UUID
Sinh tối đa 1.000 UUID v4, UUID v7 theo thời gian, ULID, Nano ID hoặc mã hex ngẫu nhiên mỗi request. Ngẫu nhiên an toàn, hỗ trợ chữ in hoa.
⏱Phân tích biểu thức cron
Kiểm tra biểu thức cron và xem các lần chạy tiếp theo theo múi giờ bất kỳ, kèm mô tả dễ hiểu. Hỗ trợ cú pháp cron 5, 6 và 7 trường.
🕒Giờ & múi giờ
Lấy giờ hiện tại ở mọi múi giờ, đổi giữa các múi giờ và Unix timestamp (giây hoặc mili giây), kèm độ lệch UTC và thứ trong tuần cho tối đa 30 múi giờ.