select - from table where in,sql语句select from where

  select * from table where in,sql语句select from where

  http://www . Zhang ping Yong . com/database-SQL-select-from-table-where . html

  http://blog.sina.com.cn/s/blog_4c1c63910100r9qz.html

  这是什么样的查询语句?首先,1=1不是查询语句中的任何关键字,所以请放心,你用不用这个语句都没关系,对你来说没有任何损失。

  另外,很多网站都有select * from table where 1=1这样的语句介绍。而且对于这种说法,真的很混乱(一个抄一个,很可笑),也不知道自己在说什么,导致很多新手都没有抓住重点,所以对此很苦涩。

  本文致力于为你解读这句话。看完这篇文章,你会拨开云雾。

  我们先来看这个语句的结果:select * from table where 1=1,其中where 1=1,由于1=1始终为真,返回TRUE,条件为真;因此,该语句相当于select * from table,返回查询表中的所有数据。

  第一,多条件查询不使用where 1=1的麻烦

  比如你做一个查询页面,有多个选项可以查询,同时允许用户自己选择输入查询关键字,那么根据平时查询语句的动态结构,代码如下:

  string MySqlStr=" select * from table where ";

  如果(年龄。文本长度0)

  {

  MySqlStr=MySqlStr "Age=" "Age。文本“”;

  }

  如果(地址。文本长度0)

  {

  MySqlStr=MySqlStr "和Address=" 地址。文本“”;

  }

  假设

  如果上面两个IF判断语句都为真,即用户输入了查询词,那么最终的MySqlStr动态构造语句就变成了:

  MySQL=" select * from table where age= 18 and address=云南省文山州广南县小波莫村"

  可以看出,这是一条完整正确的SQL查询语句,可以正确执行,并根据数据库中是否有记录返回数据。

  假设

  如果上述两个IF判断语句无效,那么最终的MySqlStr动态构造语句就变成了:

  MySqlStr=" select * from table where "

  现在,让我们来看看这个声明。因为where关键字后面需要条件,但是这个语句中根本没有条件,所以这个语句是错误的语句,一定不能执行。它不仅会报告错误,而且也不会查询任何数据。

  以上两个假设代表实际应用,说明句子的构造存在问题,不足以应对灵活多变的查询条件。

  二。使用where 1=1的好处

  如果我们将上面的语句改为:

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

  如果(年龄。文本长度0)

  {

  MySqlStr=MySqlStr "和Age=" "Age。文本“”;

  }

  如果(地址。文本长度0)

  {

  MySqlStr=MySqlStr "和Address=" 地址。文本“”;

  }

  现在,也有两种假设。

  假设

  如果两个IF都为真,则语句变为:

  MySQL=" select * from table where 1=1年龄= 18 ,地址=云南省文山州广南县小波莫村 "。显然,这种说法是正确的,可以正确执行。如果数据库里有记录,肯定会被查询。

  假设

  如果两个IF都不成立,则该语句变为:

  MySQL str=" select * from table where 1=1 "。现在,我们来看看这个声明。因为where 1=1是真语句,所以该语句具有正确的语法,并且可以正确执行。它的作用相当于:MySQL str="select * from table ",即返回表中的所有数据。

  其含义是:如果用户在多条件查询页面中没有选择任何字段或输入任何关键字,将返回表中的所有数据;如果用户在页面中选择了一些字段并输入了一些查询关键字,那么将会根据用户设置的条件进行查询。

  说了这么多,不知道大家有没有理解。其实where 1=1的应用并不是高级应用,也不是所谓的智能构造。只是为了满足多条件查询页面中的各种不确定因素,而构造一个能够正确运行的动态SQL语句的一种方式。

  三。做多条件查询一定要用where 1=1吗?

  不,如果你喜欢,你可以使用它。不喜欢就不用。对你来说,你没有什么可失去的,也没有什么可得到的。

  那么,如果我不使用where 1=1进行多条件查询,我该如何构造一个动态查询语句呢?很简单,我给你一个思路:

  以下声明:

  string MySqlStr=" select * from table ";

  如果(年龄。文本长度0)

  {

  QuerySqlStr=QuerySqlStr " Age=" Age。文本“”;

  }

  如果(地址。文本长度0)

  {

  QuerySqlStr=QuerySqlStr "和Address=" " 地址。文本“”;

  }

  if(QuerySqlStr。长度0)

  {

  MySqlStr=MySqlStr " where "+query sqlstr;

  }

  不管你用where 1=1做多条件查询,只要你能保证你构造的查询语句是正确的,就万无一失。

  四。其中1=1的总结

  一种“江湖手段”,用于构造复杂、正确的查询语句,具有动态、多条件和不确定因素。

  一般这种方法在书本上并不常见,但在实际应用中,人们不得不从现实的角度考虑,即保证满足多条件查询和应对不确定因素的灵活性,最终保证语句中没有语法错误。

  这是一个好方法。但是,因为这个where 1=1,我不知道让多少新手,琢磨了多少遍,还是不能说到点子上。同时可能会误导新手误入歧途;

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: