不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
妙用"1=1"和"1<>1"
编辑:dnawo 日期:2007-11-21
在多条件动态查询过程中我们常常得根据选择条件动态的生成SQL查询语句,假设我们得根据选择的班级和姓名信息动态的查询学生信息,下边提供了三种生成SQL查询语句的方法:
方法一:
方法二:
方法三:
我们来比较下三种方法
方法一:不会出错,代码多;
方法二:在user_name和user_class都为空的情况下会出现"select * from student where"这样的错误的SQL查询语句,代码和方法一样多;
方法三:不会出错,代码最少;
显然方法三是最可选的方法,最令人叫绝的是它用了"1=1",既减少了代码,又避免了出现错误的SQL查询语句!
关于"1=1(永真)"和"1<>1(永假)"网上举的比较多的例子就是在拷贝表和复制表结构中使用,代码如下:
拷贝表:create table_name as select * from Source_table where 1=1;
复制表结构:create table_name as select * from Source_table where 1<>1;
方法一:
复制内容到剪贴板
程序代码

user_name = Request.Form("user_name") '姓名
user_class = Request.Form("user_class") '班级
sWhere = ""
If user_name<>"" Then
If sWhere = "" Then
sWhere = " where user_name='" & user_name & "' "
Else
sWhere = sWhere & " and user_name='" & user_name & "' "
End If
End If
If user_class<>"" Then
If sWhere = "" Then
sWhere = " where user_class=" & user_class & " "
Else
sWhere = sWhere & " and user_class=" & user_class & " "
End If
End If
sSql = "select * from student" & sWhere 'SQL查询语句
user_class = Request.Form("user_class") '班级
sWhere = ""
If user_name<>"" Then
If sWhere = "" Then
sWhere = " where user_name='" & user_name & "' "
Else
sWhere = sWhere & " and user_name='" & user_name & "' "
End If
End If
If user_class<>"" Then
If sWhere = "" Then
sWhere = " where user_class=" & user_class & " "
Else
sWhere = sWhere & " and user_class=" & user_class & " "
End If
End If
sSql = "select * from student" & sWhere 'SQL查询语句
方法二:
复制内容到剪贴板
程序代码

user_name = Request.Form("user_name") '姓名
user_class = Request.Form("user_class") '班级
sWhere = ""
If user_name<>"" Then
If sWhere = "" Then
sWhere = " user_name='" & user_name & "' "
Else
sWhere = sWhere & " and user_name='" & user_name & "' "
End If
End If
If user_class<>"" Then
If sWhere = "" Then
sWhere = " user_class=" & user_class & " "
Else
sWhere = sWhere & " and user_class=" & user_class & " "
End If
End If
sSql = "select * from student where" & sWhere 'SQL查询语句
user_class = Request.Form("user_class") '班级
sWhere = ""
If user_name<>"" Then
If sWhere = "" Then
sWhere = " user_name='" & user_name & "' "
Else
sWhere = sWhere & " and user_name='" & user_name & "' "
End If
End If
If user_class<>"" Then
If sWhere = "" Then
sWhere = " user_class=" & user_class & " "
Else
sWhere = sWhere & " and user_class=" & user_class & " "
End If
End If
sSql = "select * from student where" & sWhere 'SQL查询语句
方法三:
复制内容到剪贴板
程序代码

user_name = Request.Form("user_name") '姓名
user_class = Request.Form("user_class") '班级
sWhere = ""
If user_name<>"" Then sWhere = sWhere & " and user_name='" & user_name & "' "
If user_class<>"" Then sWhere = sWhere & " and user_class=" & user_class & " "
sSql = "select * from student where 1=1" & sWhere 'SQL查询语句
user_class = Request.Form("user_class") '班级
sWhere = ""
If user_name<>"" Then sWhere = sWhere & " and user_name='" & user_name & "' "
If user_class<>"" Then sWhere = sWhere & " and user_class=" & user_class & " "
sSql = "select * from student where 1=1" & sWhere 'SQL查询语句
我们来比较下三种方法
方法一:不会出错,代码多;
方法二:在user_name和user_class都为空的情况下会出现"select * from student where"这样的错误的SQL查询语句,代码和方法一样多;
方法三:不会出错,代码最少;
显然方法三是最可选的方法,最令人叫绝的是它用了"1=1",既减少了代码,又避免了出现错误的SQL查询语句!
关于"1=1(永真)"和"1<>1(永假)"网上举的比较多的例子就是在拷贝表和复制表结构中使用,代码如下:
拷贝表:create table_name as select * from Source_table where 1=1;
复制表结构:create table_name as select * from Source_table where 1<>1;
评论: 0 | 引用: 0 | 查看次数: 3577
发表评论
请登录后再发表评论!