Mi preferencia personal es similar a su primera respuesta allí, pero para mis ojos su legibilidad es más fácil:
var statement = con.createStatement
(
'select * from t where ' +
'(t.a1 = 0 and t.a2 >=-1) ' +
'order by a3 desc limit 1'
);
Se logra un gran similitud con el formato de sintaxis SQL He estado usando durante casi 20 años :
SELECT *
FROM t
WHERE
t.a1 = 0 AND
t.a2 >=-1
ORDER BY a3 DESC
LIMIT 1
Mantener la continuación (+
en JavaScript o AND
en SQL) en el extremo derecho permite que el ojo se deslice hacia abajo de manera uniforme el borde izquierdo, comprobando lvalues & sintaxis. Eso es un poco más difícil de hacer con la continuación de la izquierda, no es importante a menos que haga MUCHO de esto, en cuyo punto cada caloría que gasta es una caloría que podría haber sido salvada por una ligera mejora en el formato.
Dado que esta consulta es tan simple, dividir todo en formato SQL es un desperdicio de espacio y ancho de banda, por lo que el JavaScript sugerido se basa en seis líneas en lugar de diez. Al juntar los curlies en una línea, cada uno lo lleva a cuatro líneas, ahorrando espacio en blanco. No obstante, no es tan claro ni tan simple de editar.
He cometido un error estúpido aquí. Es fácil olvidarse de escribir un espacio entre cadenas. Tenga en cuenta el espacio entre las cadenas (lo tiene correcto); si falta espacio, la instrucción SQL no funcionará. – xralf
¿Podría explicar por qué '' '\' '' no es javascript estándar? Al igual que, ¿nunca se menciona en la especificación ecmascript, mal visto o de lo contrario no es "estándar"? –
Por cierto, "seleccionar *" es una mala práctica, especialmente cuando se genera la consulta desde una cadena SQL dinámica. Esto puede convertirse en una pesadilla de seguridad, entre otras cosas. Es una práctica mucho mejor indicar explícitamente las columnas y usar una llamada a un procedimiento de base de datos o una llamada a función de tabla para garantizar que se reduzca la responsabilidad de la inyección SQL. En SQL Server, SQL dinámico siempre debería usar sp_executesql. – devinbost