2010-02-05 15 views
5

estoy buscando en algún código SQL que tiene una cláusula WHERE como esto:valor antes de la variable

WHERE 'USD' = CCY 

le pregunté al escritor por eso que está poniendo el valor en el lado izquierdo, y dijo que es la mejor práctica para hacerlo, proveniente de C++ donde las personas podrían asignar el valor por error en lugar de comparar la igualdad al olvidar el segundo signo de igual.

Nunca he visto esto antes.

¿Cuáles son sus pensamientos?

+3

debería ser wiki de la comunidad – SilentGhost

+0

Puedo entender al comparar variables en C++, C#, java, javascript, etc. ... pero no creo que realmente importe ya que nunca se pueden asignar valores a variables en una cláusula where ... – Zoidberg

+2

@Zoidberg: casi nunca es un problema en C# o en Java, donde las instrucciones "if", etc. deben tener un tipo de condición booleana, por lo que es muy raro que un error tipográfico siga siendo legal de todos modos. –

Respuesta

8

Er, C++ no es SQL. No hay == en SQL y no hay asignaciones en una cláusula WHERE.

No estoy seguro si califica como "mejor práctica", pero hay una convención que coloca el valor conocido en el lado derecho. Así, con un literal como en el ejemplo que sería

WHERE CCY = 'USD' 
2

Nunca lo he visto en SQL, donde, por supuesto, el razonamiento de C++ no se aplica, ya que '=' no es un operador de asignación en este contexto. Además, a muchos programadores de C++ (incluyéndome a mí) no les gusta este estilo.

4

La mejor práctica en C++ no lo convierte en una práctica recomendada en SQL. Al optimizador de consultas no le importará, así que es solo cuestión de preferencia, pero debo decir que no sería mi preferencia o cómo lo escribiría naturalmente.

0

Si nos fijamos en él:

'USD' = CCY 

es esencialmente la misma:

CCY = 'USD' 

cuanto a:

es la mejor práctica para hacerlo, derivada de C++, donde personas podrían equivocadamente asignar el valor en lugar de comparar igualdad por obtener el segundo es igual al signo.

Bueno, nunca he visto que esto suceda, y si esto era tan importante, sin duda nos hemos visto esto en alguna parte y esto habría sido practicada por la mayoría, si no por todos.

+0

?????????????????? – Sarfraz

+0

+1 No tengo idea por qué esto se marcó, estaba diciendo lo mismo que el resto de nosotros – Andrew

+0

@Andrew: Muchas gracias, pero no sé cómo la gente está tratando de conseguir uno para obtener votos, esto es realmente malo práctica. – Sarfraz

0

yo personalmente no lo haría de esa manera, pero poner el nombre de la columna en el lado izquierdo, ya que para mí es más fácil de leer/más fácil de seguir dentro de una consulta SQL.

Rara vez lo he visto hecho de la manera opuesta, y no creo que la razón dada sea realmente aplicable a SQL (como se ha señalado, es "=" en SQL, no "==")

0

Si él dice que es una buena práctica, le pediría que lo pruebe con SQL, no con fuentes C++. Dado que el 99,9% del código SQL que he leído (incluido nuestro código, el código de otra organización, archivos de ayuda de Microsoft, blogs SQL, etc.) hace lo contrario de lo que hace su desarrollador, yo diría que eso viola la expectativa normal del desarrollador que mantendrá el código es una mala idea.En SQL esperamos ver la forma

WHERE CCY = 'USD' 

no

WHERE 'USD' = CCY 

lo tanto, el professsional también escribir código de esa manera para asegurarse de que está claro para el mantenedor.

Cuestiones relacionadas