关于查询条件的组合问题

sfel801208 2005-10-11 07:12:51
我要做类似下面的查询:
select * from table1 where field1=value1 and field2=value2 and field3=value3 and ....
其中查询条件的组合是根据变量value1,value2,value3...的值来设定,不为空的值就组合在一起,如:value2="" value1<>"" value3<>"" 则查询语句为:
sqlstr="select * from table1 where field1='"&<%=value1%>&"' and field3='"&<%=value3%>&"'"
请问如何根据不同情况自动把这些查询条件组合起来呢?我记得以前看过,好像是用数组加循环来完成的,但现在找不到那段代码了。
...全文
173 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenguang79 2005-10-12
  • 打赏
  • 举报
回复
用sql组合就行了
sqlstr="select * from table1 where 1=1"
if value1<>"" then
sqlstr=sqlstr&"field1='"&<%=value1%>&"'
end if
if value2<>"" then
sqlstr=sqlstr&"field2='"&<%=value2%>&"'
end if
sfel801208 2005-10-12
  • 打赏
  • 举报
回复
还是自己回答吧,昨晚写的,跟lnboy1003(陌生人)的差不多,还是贴出来吧,我认为这是比较完整的答案了
<%
sqlstr= "select * from table1"
dim f(6),v(6)
dim str
f(0)="field1"
f(1)="field2"
f(2)="field3"
f(3)="field4"
f(4)="field5"
f(5)="field6"
v(0)=value0
v(1)=value1
v(2)=value2
v(3)=value3
v(4)=value4
v(5)=value5
for i=0 to ubound(v)
if v(i)<>"" then
str=str&" "&f(i)&"='"&v(i)&"' and"
end if
next
if str<>"" then
str=left(str,len(str)-4)
end if
if trim(str)<>"" then
sqlstr=sqlstr&" where "&str
end if
response.Write(sqlstr)
%>
sfel801208 2005-10-12
  • 打赏
  • 举报
回复
其实问题关键是在where里加1=1巧妙的处理了and的个数和位置的问题

不明白~~为什么没有and呢?
iuhxq 2005-10-12
  • 打赏
  • 举报
回复
其实问题关键是在where里加1=1巧妙的处理了and的个数和位置的问题
iuhxq 2005-10-12
  • 打赏
  • 举报
回复
sqlstr="select * from table1 where 1=1"
if value1<>"" then
sqlstr=sqlstr&"field1='"&<%=value1%>&"'
end if
if value2<>"" then
sqlstr=sqlstr&"field2='"&<%=value2%>&"'
end if

汗自己一个,大概这意思吧,你的写法我模仿不来
sfel801208 2005-10-12
  • 打赏
  • 举报
回复
jspadmin(阿笨狗http://www.pifoo.com)

你漏了一个"and"
SQL="select * from table1 where " & sql1 &"and "&sql2&"and "&sql3&"and "...
如果某些项为空,不是多了一个"and"了吗?这样又得一个个判断了?
所以我才用数组
pengshu12345 2005-10-11
  • 打赏
  • 举报
回复
做个标记
lnboy1003 2005-10-11
  • 打赏
  • 举报
回复
sql="select * from table1 where"
for i=0 to unboud(value)
if value(i)<>"" then
sql=sql&" &"&field(i)&"="&"&"&value(i)&" and"
end if
next
sql=left(sql,(len(sql)-3))
jspadmin 2005-10-11
  • 打赏
  • 举报
回复
解释:如果value1="",那么sql1="",组合语句里就没有field1='"&<%=value1%>&"
jspadmin 2005-10-11
  • 打赏
  • 举报
回复
晕,用SQL语句组合不就完了?哪里要那么麻烦!
if value1<>"" then
sql1=" field1=value1 "
end if
if value2<>"" then
sql1=" field2=value2 "
end if
if value3<>"" then
sql1=" field3=value3 "
end if
SQL="select * from table1 where " & sql1 & sql2 &sql3
若白师妹 2005-10-11
  • 打赏
  • 举报
回复
sqlstr="select * from table1 where 1=1"
if value1<>"" then
sqlstr=sqlstr&"field1='"&<%=value1%>&"'
end if
if value2<>"" then
sqlstr=sqlstr&"field2='"&<%=value2%>&"'
end if

汗自己一个,大概这意思吧,你的写法我模仿不来
sfel801208 2005-10-11
  • 打赏
  • 举报
回复
我知道,可是不记得怎么写了
smartkide 2005-10-11
  • 打赏
  • 举报
回复
用數組啊。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧