SQL语句太长,无查询结果,却又不报错

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:57:02
一个高级搜索功能,导致动态生成的SQL语句可能非常长。当达到一定长度时,导致无查询结果。却又不报错。why?
SQL查询语句有长度限制吗?如何解决此问题?是ACCESS数据库的限制,还是查询语句的某些语法规定约束??(用的是ASP+ACCESS的数据库)
有遇到过的,教教我,急......
语句没有错,少选查询条件,这样语句缩短,就没问题。很奇怪
在ACCESS里运行语句进行查询会提示“查询过于复杂”................看来是ACCESS的限制?

以下是SQL语句的循环规律
想全部贴出来,可提示问题补充字数限定在1000字节内(可见超出1000字节)。
照这样循环下去,到达一定长度就出问题。
-----------------------------------------------------------
select * from School where id is not null and (Instr('|'&USA_Major&'|','|521|') or Instr('|'&USA_Major&'|','|557|') or Instr('|'&USA_Major&'|','|555|') or Instr('|'&USA_Major&'|','|642|') or Instr('|'&USA_Major&'|','|643|') or Instr('|'&USA_Major&'|','|766|') or Instr('|'&USA_Major&'|','|1482|') or Instr('|'&USA_Major&'|','|527|') or Instr('|'&USA_Major&'|','|628|'

先肯定的回答你,这段SQL语句就算在放大500倍,SQL也能查询出来(速度要看你服务器能力了),所以不是语句长度问题。开销是在查询上。
再分析你的条件,你的大概意思是想查出ID不为空并且为那些工号的行。你应该把所有OR的条件括号起来,否则系统认为ID不为空并且不为521
最后建议你语句改成:
select * from School where id in(Instr('|'&USA_Major&'|','|521|','|'&USA_Major&'|','|557|'),……)

只有一种可能性 你sql语句错误。可以将sql语句输出在数据库里执行以下查询就知道了 。。。。还真没见过这么多。。。。

一个字"难"