where 0=1和where1=1语句

where 1=1始终为true,在构造动态sql语句时,能够保证查询语句恒正确。
where 1=0; 这个条件始终为false,结果不会返回任何数据,只有表结构,可用于快速建表。

动态sql语句的一些问题

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'";
  }

如果两个if语句均不成立,那么MySqlStr动态构造语句就变成了:
MySqlStr=”select * from table where”
这是一条错误的语句,不能被执行,会报错,这并不是一种好的编码方式,不够鲁棒。

使用where 1=1语句后

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'";
  }

若两个if不成立,MySqlStr语句就变成了:
MySqlStr="select from table where 1=1;
该语句语法正确,它的作用相当于:MySqlStr=”select * from table;,被执行后,返回表中所有数据。意思就是,用户在多条件查询时,不输入任何条件,就会返回表中所有数据。

where 0=1语句

where 1=0; 这个条件始终为false,结果不会返回任何数据,只有表结构,可用于快速建表
SELECT * FROM strName WHERE 1 = 0; 该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。
create table newtable as select * from oldtable where 1=0; 创建一个新表,而新表的结构与查询的表的结构是一样的。

    原文作者:安然_fc00
    原文地址: https://www.jianshu.com/p/75e6c7505d0a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞