SQL Formatter

[ INAYOS NA SQL ]
SELECT u.name, COUNT(o.id)AS orders FROM users u LEFT JOIN orders o ON o.user_id = u.id WHERE u.active = TRUE AND u.note < > 'select one from the list' GROUP BY u.name ORDER BY 2 DESC
36 tokens · 1 statements
Mga token36
Mga statement1
This lays SQL out to be read. It does not parse, validate or rewrite it — a formatter that claimed to validate SQL would be claiming to implement a dialect.
Text inside quotes was left exactly as it is. A formatter that uppercases keywords with a plain search would turn a note reading "select one from the list" into SQL-looking nonsense — silently changing data inside a query you asked only to tidy.
Only keywords were recased. Identifiers are never touched: in PostgreSQL an unquoted identifier folds to lower case and a quoted one does not, so changing the case of one can change which column it refers to.
[ ANO ITO ]

Ang nasa loob ng panipi ay hindi code, at iyon ang buong hirap. Ang formatter na naglalaki ng keyword gamit ang basta paghahanap ay ginagawang 'SELECT one FROM the list' ang talang nagsasabing 'select one from the list'tahimik na binabago ang datos sa query na ipinaayos lang sana.

Kaya tinotoken muna ito, at keyword lang ang binabago ang case. Ganoon din ang komento.

Hindi rin ginagalaw ang pangalan ng column. Sa PostgreSQL, ang identifier na walang panipi ay bumababa sa maliit na titik at ang may panipi ay hindi — kaya ang pagbabago ng case ay puwedeng magpalit kung aling column ang tinutukoy.

At hindi ito nagpa-parse o nagve-validate. Inaayos nito ang anyo para mabasa ng tao. Ang formatter na nag-aangking nagve-validate ng SQL ay nag-aangking ipinatupad nito ang isang dialect.

[ MGA TANONG ]

Babaguhin ba nito ang teksto sa loob ng panipi ko?

Hindi, at iyon ang pangunahing tinatamaan ng tool na ito. Ang formatter na nagpapalaki ng keyword gamit ang payak na paghahanap ay ginagawang mukhang SQL na walang kuwenta ang notang nagsasabing “select one from the list” — tahimik na binabago ang datos sa loob ng query na pinaayos mo lang sana. Nagto-token muna ito, kaya ang nakilalang keyword lang ang binabago ang anyo. Iniiwan ang komento sa parehong dahilan.

Bakit hindi nito pinapalaki ang pangalan ng column ko?

Dahil puwedeng may kahulugan ang anyo ng titik. Sa PostgreSQL, ang identifier na walang panipi ay bumabagsak sa maliit na titik at ang may panipi ay hindi, kaya magkaibang column ang "Order" at ang Order — ang pagbabago sa anyo ng isa ay puwedeng magpalit kung aling column ang ibig sabihin ng query. Keyword lang ang ginagalaw.

Kaya ba nito ang backtick at square bracket?

Oo. Ang double quote ang karaniwang pananda ng identifier, ang backtick ay MySQL at ang square bracket ay SQL Server, at ang tatlo ay pinapanatiling eksakto sa pagkakasulat. Iyon ang dahilan kung bakit gumagana ang column na tinatawag na order, at ang pagkakamali dito ang paraan ng pagsira ng formatter sa perpektong wastong query.

Sinusuri ba nito kung wasto ang SQL ko?

Hindi. Inilalatag nito ang pahayag para mabasa ng tao, at iyon ang kailangan mo kapag nakatitig ka sa 400-karakter na linya mula sa ORM. Hindi ito nagpaparse, nagpapatunay o nagsusulat muli — ang formatter na nagsasabing pinapatunayan nito ang SQL ay nagsasabing ipinapatupad nito ang isang dialect, at ilan silang hindi magkasundo.

Ano ang mangyayari sa sirang query?

Inaayos pa rin ito. Ang may query na hindi tatakbo ay gusto pa ring makita ang hugis nito, at ang pagtangging ilatag ito ay nag-aalis ng iisang bagay na puwedeng magturo sa kanila kung saan nagkamali.

Ipinapadala ba kahit saan ang query ko?

Hindi. Sa browser mo nangyayari ang lahat at walang ipinapadala o itinatago — at mahalaga iyon dito, dahil madalas na may dalang pangalan ng talahanayan, pangalan ng column at minsan ay tunay na halaga mula sa sarili mong database ang query.

[ ANG KOMPUTASYON ]
Ano ang binabago at ano ang hindi
Keywordbinabago ang case
Pangalan ng columnhindi ginagalaw
Teksto sa loob ng panipihindi ginagalaw
Komentohindi ginagalaw
[ TATLONG DIALECT, TATLONG PANIPI ]
"order"pamantayan, PostgreSQL
`order`MySQL
[order]SQL Server

Lahat ay pinapanatili kung paano isinulat. Iyan ang nagpapagana sa column na tinawag na order.

[ SUSUNOD ]
43JSON FormatterFor the result set rather than the query
65XML at HTML FormatterThe same job, different language
55Pang-redact ng TekstoBefore pasting a query into a ticket
48Paghahambing ng TekstoCheck two queries really are the same
[ MAHALAGA ]

Runs entirely in your browser; nothing is transmitted. This lays a query out to be read — it does not parse, validate or rewrite it. Only keywords are recased; identifiers and anything inside quotes are left exactly as written. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.