Moje osobiste preferencje jest podobna do pierwszej odpowiedzi tam, ale na moich oczach jego czytelność jest łatwiej:
var statement = con.createStatement
(
'select * from t where ' +
'(t.a1 = 0 and t.a2 >=-1) ' +
'order by a3 desc limit 1'
);
Uderza bliskie podobieństwo do formatu składni SQL Używam od prawie 20 lat :
SELECT *
FROM t
WHERE
t.a1 = 0 AND
t.a2 >=-1
ORDER BY a3 DESC
LIMIT 1
Utrzymanie ciągłości (+
w JavaScript lub AND
w SQL) po prawej stronie pozwala na oko ślizgać się równomiernie wzdłuż lewej krawędzi, sprawdzając lwartościami & składnię. Trochę trudniej jest zrobić z kontynuacją po lewej stronie - nieważne, chyba że zrobisz WIELE rzeczy, kiedy każda kaloria, jaką wydasz, jest kalorią, którą można zaoszczędzić dzięki niewielkiej poprawie formatu.
Ponieważ to zapytanie jest tak proste, podzielenie go na format SQL jest marnotrawstwem przestrzeni i przepustowości, dlatego sugerowany JavaScript jest na sześciu liniach zamiast dziesięciu. Zwijanie curlies w górę o jedną linię powoduje przejście do czterech linii, co pozwala zaoszczędzić odstępy. Jednak nie do końca jasne i łatwe do edycji.
Zrobiłem tutaj głupi błąd. Łatwo zapomnieć o zapisaniu spacji między łańcuchami. Bądź świadomy przestrzeni między ciągami znaków (masz ją poprawnie), jeśli brakuje miejsca, instrukcja SQL nie będzie działać. – xralf
Czy możesz wyjaśnić, dlaczego '' '' '' nie jest standardowym javascript? Jak to jest, czy nie jest ono wspomniane w specyfikacji ecmascript, nie jest mile widziane, czy też nie jest "standardowe"? –
Nawiasem mówiąc, "wybierz *" jest złą praktyką, szczególnie podczas generowania zapytania z dynamicznego ciągu SQL. Może to stać się koszmarem dla bezpieczeństwa, między innymi. Lepszą praktyką jest jawne wskazywanie kolumn i korzystanie z wywołania procedury bazy danych lub wywołania funkcji z wartościami tabelowymi w celu ograniczenia odpowiedzialności za iniekcję SQL. W SQL Server dynamiczny SQL powinien zawsze używać sp_executesql. – devinbost