查看: 1718|回复: 0

SQL语句中巧用WHERE 1=1

[复制链接]
发表于 2005-5-30 20:10:26 | 显示全部楼层 |阅读模式
"比如说你现在在做个查询表单<BR>&lt;form method=post action=test.asp&gt;<BR>&lt;p&gt;name:&lt;input name=tName&gt;&lt;/P&gt;<BR>&lt;p&gt;contents keyword:&lt;input name=tCkeyword&gt;&lt;/P&gt;<BR>&lt;p&gt;topic keyWord:&lt;input name=tTkeyword&gt;&lt;/P&gt;<BR>&lt;p&gt;&lt;input type=submit value=""test""&gt;&lt;/P&gt;<BR>&lt;/form&gt;<BR>里面有三个查询条件,用户可以使用一个,二个或三个条件(当然,要多个的话自己加),以应表中uName,Topic,Contents三个字段<BR>在查询页面test.asp里你是不是要写复杂的IF语句呢?<BR>用到 where 1=1,就可以方便解决你的代码.<BR>test.asp<BR>---------------------------------<BR>dim nameString,Tstring,Cstring<BR>nameString=""<BR>Tstring=""<BR>Cstring=""<BR>if request("tname")&lt;&gt;"" then nameString=" and uName='" &amp; checkString(request("tName")) &amp; "'"<BR>if request("tTkeyword")&lt;&gt;"" then TString=" and Topic like '%" &amp; checkString(request("tTkeyword")) &amp; "%'"<BR>if request("tCkeyword")&lt;&gt;"" then CString=" and content like '%" &amp; checkString(request("tCkeyword")) &amp; "%'"<BR>sql="select * from table where 1=1" &amp; nameString &amp; Tstring &amp; Cstring<BR>......<BR><BR>注:上面的checkString是非法字符处理函数,在此篇中不是重点,不做介绍<BR>如果不使用 where 1=1 那么当条件顺序变了,或当某个条件不存在时,存在着对某个条件string中对"where " 或 " and "之类命令字比较复杂的处理.<BR><BR>1=1 返回 1<BR>从逻辑运算上来讲<BR>1 and x=x  这是一条法则<BR>那么<BR>1 and (a and b) 逻辑结果等于 a and b<BR>1 and a or b ==&gt; (1 and a) or b ==&gt; a or b<BR>即,多加 1=1 不会对逻辑判断造成任何影响. 反而,在多件的SQL组合语句字串的构造上获取了方便.<BR>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖QQ客服返回顶部