SQL -- where 1=1

本文深入探讨了SQL查询语句中使用where1=1的原因及其在动态查询中的应用,解析了其背后的逻辑与效率优势,并讨论了SQL注入风险及防范措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
因为系统仅会读取结构信息,而不会将具体的表记录读入内存中,这无疑节省了系统开销。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值