如果I1,I3都不是NULL,这个SQL就没有问题.下面的SQL是针对NULL值的一种处理
前提:I1不是NULL,但R1存在NULL值
1.SELECT * FROM TABLENAME WHERE R1 <> I1
这条SQL找不出R1值是NULL的记录.
SELECT * FROM TABLENAME WHERE R1 <> I1 OR R1 IS NULL
这条SQL可以找出R1值是NULL的记录.
前提:I1不是NULL,但R1存在NULL值
1.SELECT * FROM TABLENAME WHERE R1 <> I1
这条SQL找不出R1值是NULL的记录.
SELECT * FROM TABLENAME WHERE R1 <> I1 OR R1 IS NULL
这条SQL可以找出R1值是NULL的记录.
Where R1=I1 And R3=I3
WHERE
(ISNULL(R1, '')='' OR R1='I1') AND
(ISNULL(R2, '')='' OR R2='I2') AND
(ISNULL(R3, '')='' OR R3='I3')
ether说的就可以,不过如果你想做成模糊查询的话,
最好还是自己组合sql语句。is null是很慢的。
做成这种通用的语句,速度恐怕会受不了
最好根据I1,I2,I3自己组织sql语句,缺点是需要对数据库对象有直接的访问权限.在Ms sql中强烈推荐
sqlstr="select * from tblname"
wherestr=""
for i=0 to n-1
if not text1(i).text="" then
wherestr=wherestr & rs.fields(i).name & "='" & text1(i).text & "' and"
‘注意如果是数字型字段则去掉单引号
end if
next i
wherestr=left(wherestr,len(wherestr)-4) '去掉最后的 and
sqlstr=sqlstr+wherestr '最终的查询语句