SQL --- where 1=1 与 1<> 1
1、Sql 中的查询语句中的where 字句是为了带条件进行查询,那么使用where 1=1 后查询的是什么
首先:查询表 tb_obge 中的所有字段
select * from dbo.obgexinzi
也可以写成
select * from dbo.obgexinzi where 1=1
因为 1=1 表示永远为真,不起约束作用查询所有,不会报错
1=1 只是为了表示永真,你使用 1<2 a='a',也行,为啥使用where 1=1来,因为 1=1 的运算开销更小,所以常用
2、既然使用where 1=1 和没有使用的效果相同为啥还要用来?
在动态查询的时候可以使用,经常见的查询条件
列句:
String sql ="select * from obgexinzi where 1=1"
if (this.tbsqlUserName.Text.Trim() != string.Empty)//姓名
{
strSql += " and Name like '%" + this.tbsqlUserName.Text.Trim() + "%'";
} if (this.ddlUserSex.Text.Trim() != string.Empty)//性别
{
strSql += " and Sex like '%" + this.ddlUserSex.SelectedValue + "%'";
}
如果要是不使用 where 1=1 ,那么就要用程序进行判断什么时候使用 and
因为这样无疑是错的。
select * from obgexinzi where and Name like
而且你也很难判断,用户使用的是那几个查询条件进行组合查询,要不要加where 或直接用 and ,无疑会,提高程序复杂度
加上后,不管有没有查询条件都不会出错,只要判断条件是不是为空就行,提高运行的效率。
select * from obgexinzi where 1=1 and Name like
3、sql 注入,使用 or 1=1 会把表中所有数据查出来,
查寻没有什么感觉要是使用 删除语句哪
delete from obgexinzi where Name = '周瑜' or 1=1 --删除表中所有
4、 where 1=1 与 1<> 1 之间的关系
select * from obgexinzi where 1=1
-- 实际等效于select * from obgexinzi where true;-- 语句将返回t1中所有的记录行 select * from obgexinzi where 1<>1
-- 实际等效于 select * from obgexinzi where false;-- 语句将返回空记录集
where 1<>1 的作用
当我们只需要获取表的字段(结构)信息,而不需要理会实际保存的记录时,可以使用where 1<> 1
因为系统仅会读取结构信息,而不会将具体的表记录读入内存中,这无疑节省了系统开销。
SQL --- where 1=1 与 1<> 1的更多相关文章
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- SQL Server 大数据搬迁之文件组备份还原实战
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...
- Sql Server系列:分区表操作
1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...
- SQL Server中的高可用性(2)----文件与文件组
在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...
- EntityFramework Core Raw SQL
前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
随机推荐
- maven 上传jar包到私服仓库
按一下形式上传jiar包 # mvn deploy:deploy-file -DgroupId=com.itextpdf -DartifactId=itextpdf -Dversion=5.5.13 ...
- Security+学习笔记
第二章 风险分析 风险管理 评估:确定并评估系统中存在的风险 分析:分析风险对系统产生的潜在影响 响应:规划如何响应风险的策略 缓解: 缓解风险对未来安全造成的不良影响 风险分析流程 资产确定 漏洞确 ...
- 【框架】利用Spring的BeanPostProcessor来修改bean属性
一.BeanPostProcessor是什么?什么时候触发?可以用来做什么? 1.它是什么? 首先它是一个接口,定义了两个方法: public interface BeanPostProcessor ...
- Community structure enhanced cascade prediction 笔记
目录 一.摘要 二.杂记 三.模型思想 四.实验 五.其他 六.参考文献 一.摘要 深度学习不用去手工提取特征,但是现有深度模型没有在传播预测任务中使用社区结构.所以提出一个CS-RNN框架,把社区在 ...
- [译]Vulkan教程(17)帧缓存
[译]Vulkan教程(17)帧缓存 Framebuffers 帧缓存 We've talked a lot about framebuffers in the past few chapters a ...
- AJAX-CORS 跨域
1.CORS就是一套AJAX跨域问题的解决方案. 2.CORS的原理: CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问. 3.CORS浏览器支持情况: Chrome 3+ Firefox ...
- 20191217-关于JPA @Query查询数据一直为空,直接在数据库里执行SQL则可以查出来
20191217-关于JPA @Query查询数据一直为空,直接在数据库里执行SQL则可以查出来 前提:数据库中查询,由于在视图中无主键概念,只是在代码中由逻辑主键.结果:数据中作为逻辑主键中有个字段 ...
- IDEA 护眼色设置
首先做一些简单的记录,护眼色 等等的设置很久以前机器上已经设置过了,今天偶尔要在其他机器上重新做一些设置反而忘记了很多步骤, 设置后的HTML页面如下图所示: 默认情况下,当只是设置General通用 ...
- c# 异常精准定位
在日常项目开发中,异常抛出和捕获是再平常不过的事情.通过try-catch我们可以方便的捕获异常,同时通过查看异常堆栈我们能发现抛出异常代码的位置. 例如下面这段代码: using System; u ...
- C#如何判断委托是实例方法还是静态方法
一. 委托的分类 通过用什么类型的方法来声明为委托,可以分为两类: 1. 委托静态方法:把一个静态方法给委托 2. 委托实例方法:把一个实例对象的成员方法给委托 (这两个名字是博主取的,可能不是很专业 ...