[sql] El rol y los beneficios de usar where 1 = 1 y 0 = 1 en mysql

El uso y los beneficios de where 1 = 1 y 0 = 1 en mysql

Cartilla

Cuando use php para operar mysql, a menudo use la instrucción where para consultar. Cuando la declaración where no existe, a menudo agregue un where 1 = 1 en la parte posterior, esto se basa en la escritura de mi colega. ¡Analicemos los beneficios de donde 1 = 1!

donde 1 = 1; esta condición es siempre verdadera. En el caso de un número indefinido de condiciones de consulta, 1 = 1 puede estandarizar fácilmente la declaración.

1. No se preocupe por donde 1 = 1 en la consulta de múltiples condiciones

  Por ejemplo, si realiza una página de consulta, y hay varias opciones que pueden consultarse, y al mismo tiempo, deja que el usuario elija e ingrese palabras clave de consulta, luego, de acuerdo con la estructura dinámica de la declaración de consulta habitual, el código es aproximadamente el siguiente:

string MySqlStr=”select * from table where”;

  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“Age=“+“'Age.Text'“;
  }

  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;
}

La primera hipótesis
Si las dos declaraciones de juicio IF anteriores son ambas verdaderas, es decir, el usuario ha ingresado un término de consulta, entonces la declaración final de construcción dinámica MySqlStr se convierte en:

MySqlStr=”select * from table where Age='18'  and Address='云南省文山州广南县小波吗村'”

Se puede ver que esta es una declaración de consulta SQL completa y correcta que se puede ejecutar correctamente y devuelve datos en función de si hay registros en la base de datos.

La segunda suposición
Si las dos declaraciones de juicio IF anteriores no son verdaderas, entonces la declaración final de construcción dinámica MySqlStr se convierte en:

MySqlStr=”select * from table where“

Ahora, echemos un vistazo a esta declaración. Dado que la condición debe usarse después de la palabra clave where, pero no hay ninguna condición en esta declaración, por lo que esta declaración es errónea y no debe ejecutarse. No solo informa un error, sino que tampoco Consultará cualquier dato.

Los dos supuestos anteriores representan una aplicación práctica, lo que indica que hay problemas con la construcción de la oración, que no es suficiente para hacer frente a las condiciones de consulta flexibles.

Segundo, los beneficios de usar where 1 = 1

Si cambiamos la declaración anterior a:

string MySqlStr=”select * from table where  1=1 ”;


  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Age=“+“'Age.Text'“;
  }

  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;
}

Ahora, también hay dos supuestos

La primera suposición

Si ambos IF se mantienen, la declaración se convierte en:

MySqlStr=”select * from table where  1=1 and Age='18'  and Address='云南省文山州广南县小波吗村'”

Obviamente, esta declaración es una declaración correcta y se puede ejecutar correctamente.Si hay un registro en la base de datos, definitivamente se consultará.

La segunda hipótesis

Si ninguno de los dos se cumple, la declaración se convierte en:

MySqlStr=”select * from table where 1=1”,

Ahora, echemos un vistazo a esta declaración. Dado que donde 1 = 1 es verdadero, la declaración tiene la sintaxis correcta y se puede ejecutar correctamente. Su función es equivalente a: MySqlStr = "select * from table", es decir, return Todos los datos en la tabla.

La implicación es: si el usuario no selecciona ningún campo o ingresa palabras clave en la página de consulta de múltiples condiciones, se devolverán todos los datos de la tabla; si el usuario está en la página, seleccione algunos campos e ingrese algunos Consulta palabras clave, luego, consulta de acuerdo a las condiciones establecidas por el usuario.

Hablando de eso, no sé si lo ha entendido. De hecho, la aplicación de donde 1 = 1 no es una aplicación avanzada o una estructura inteligente, solo para cumplir con varios factores inciertos en la página de consulta de múltiples condiciones Un método utilizado para construir una instrucción SQL dinámica que puede ejecutarse correctamente.

donde 1 = 0; esta condición siempre es falsa, el resultado no devolverá ningún dato, solo la estructura de la tabla, puede usarse para construir rápidamente la tabla

"SELECT * FROM strName WHERE 1 = 0"; 

La instrucción select se usa principalmente para leer la estructura de la tabla sin tener en cuenta los datos de la tabla, lo que ahorra memoria, ya que puede guardar el conjunto de resultados.

create table newtable as select * from oldtable where 1=0;  

Cree una nueva tabla, y la estructura de la nueva tabla es la misma que la estructura de la tabla de consulta.

Supongo que te gusta

Origin www.cnblogs.com/iiiiiher/p/12718792.html
Recomendado
Clasificación