网站建设 美词原创,定制开发板,江苏 网站建设,app制作成本文章目录1. where 1 12. where 1 13. 不用where 11 在多条件查询中的困扰1. where 1 1
where 1 1;--永远为真
where 1 1#xff0c;--永远为假他俩的作用主要是一个条件永远为真#xff0c;一个永远为假#xff0c;所以这里只是说 1 1的情况 12. where 1 13. 不用where 11 在多条件查询中的困扰1. where 1 1
where 1 1;--永远为真
where 1 1--永远为假他俩的作用主要是一个条件永远为真一个永远为假所以这里只是说 1 1的情况但是不限于这样其它永远为真/假的条件语句也同理 where 1 1 用于只复制表结构不取数据
create table t2 as select * from t1 where 1 1;分析 1create table t2 as select * from t1这个动作就会先将t1 的表结构也就是有哪些字段啊复制到 t1此时表框架有了还没内容
2没有 where 1 1 条件的话就是将t1表整个复制给t2一模一样的字段和数据这个问题不大
3加了 where 1 1这个条件永远为假所以用 t1表中的数据永远不会复制到 t2里去此时的结果就是t2 就是一个空架子
明白了吧这样读取表的结构而不用考虑表中的数据节省了内存也可以不用保存结果集用于快速建表。
2. where 1 1
where 1 1 用于动态SQL规范语句 where 11; 这个条件始终为True在不定数量查询条件情况下11可以很方便的规范语句。主要用于以下这种形式的动态多条件查询语句
select name,... from table1
where 1 1 and condition1 and condition2 and ...3. 不用where 11 在多条件查询中的困扰
举个例子如果您做查询页面并且可查询的选项有多个同时还让用户自行选择并输入查询关键词那么按平时的查询语句的动态构造代码大体如下
tring MySqlStr”select * from table where”if(Age.Text.Lenght0){MySqlStrMySqlStr“Age““‘Age.Text’“}if(Address.Text.Lenght0){MySqlStrMySqlStr“and Address““‘Address.Text’“}①种假设 如果上述的两个IF判断语句均为True即用户都输入了查询词那么最终的MySqlStr动态构造语句变为
MySqlStr”select * from table where Age‘18’ and Address‘云南省文山州广南县小波吗村’”
可以看得出来这是一条完整的正确的SQL查询语句能够正确的被执行并根据数据库是否存在记录返回数据。
②种假设 如果上述的两个IF判断语句不成立那么最终的MySqlStr动态构造语句变为 MySqlStr”select * from table where“ 4. 使用 where 11 的好处 假如我们将上述的语句改为
string MySqlStr”select * from table where 11 ”if(Age.Text.Lenght0){MySqlStrMySqlStr“and Age““‘Age.Text’“}if(Address.Text.Lenght0){MySqlStrMySqlStr“and Address““‘Address.Text’“}现在也存在两种假设 ①种假设 如果两个IF都成立那么语句变为
MySqlStr”select * from table where 11 and Age‘18’ and Address‘云南省文山州广南县小波吗村’”很明显该语句是一条正确的语句能够正确执行如果数据库有记录肯定会被查询到。
②种假设 如果两个IF都不成立那么语句变为
MySqlStr”select * from table where 11”现在我们来看这条语句由于where 11 是为True的语句因此该条语句语法正确能够被正确执行它的作用相当于MySqlStr”select * from table”即返回表中所有数据。
言下之意就是如果用户在多条件查询页面中不选择任何字段、不输入任何关键词那么必将返回表中所有数据如果用户在页面中选择了部分字段并且输入了部分查询关键词那么就按用户设置的条件进行查询。
说到这里其实where 11的应用不是什么高级的应用也不是所谓的智能化的构造仅仅只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态SQL语句的一种方法。