快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → SQL语句中where 1=1的意义

SQL语句中where 1=1的意义

时间:2022-09-16 18:51:13人气:作者:快盘下载我要评论

我们在看别人项目的时候,很多时候看到这样的SQL语句:

select * from user where 1=1

其中这个where1=1是有特殊意义的,包含以下两种情境:动态SQL拼接和查询表结构。

一 动态SQL拼接

适合多条件搜索,当要构造动态sql语句时为了防止sql语句结构不当,所以加上where 1=1 ,这样SQL语句不会报错,例如:

String sql="select * from table_name where 1=1";
if( conditon 1) {
  sql=sql+"var2=value2";
}
if(conditon 2) {
  sql=sql+" and var3=value3";
}

在这个例子中,当两个if 都不成立的时候,或者仅有第一个if 成立的时候,SQL语句拼接就会出现错误。当我们的SQL语句加上where 1=1的时候,就不报错了,如下:

String sql="select * from table_name where 1=1";
if( conditon 1) {
  sql=sql+" and var2=value2";
}
if(conditon 2) {
  sql=sql+" and var3=value3";
}

SQL语句加上where 1=1,只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态SQL语句的一种方法。

二 查询表结构

优点:数据库开销小。

where 1=1是sql语句条件逻辑判断表达式,由于1=1成立,恒为真,该表达式1=1将始终返回"真"。这种写法实际目的是为了获取逻辑值"True",其实诸如2=2, 1+2=3,'中'='中'等之类的写法都可以返回逻辑值"True",只不过1=1的运算开销更小,故被应用的最普遍。下面例子将有助于理解有关概念:

1) select * from t1 where 1=1;
-- 实际等效于select * from t1 where true;-- 语句将返回t1中所有的记录行

2) select * from t1 where 1<>1;
-- 实际等效于 select * from t1 where false;-- 语句将返回空记录集

说明:例1)实际上等同于不加任何筛选条件,有些画蛇添足,where 1=1的实际意义不如where 1<>1(或者where 1=0)来得有用,当我们只需要获取表的字段(结构)信息,而不需要理会实际保存的记录时,例2)的写法将是非常可去取的,因为系统仅会读取结构信息,而不会将具体的表记录读入内存中,这无疑节省了系统开销。

SQL语句中where 1=1的意义

相关文章

  • 一步步带你设计MySQL索引数据结构

    一步步带你设计MySQL索引数据结构,想想我们生活中的例子,比如新华字典,我们有一个目录,目录根据拼音排序,内容包含了汉字位于字典中具体的的页码。聪明的你肯定也想到了,我们也可以借鉴这种思想,建立一个MySQL的目录,叫做“索引”。...
  • 影刀连接Mysql数据库

    影刀连接Mysql数据库,影刀配置连接mysql数据库基础版...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。