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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句太长,无查询结果,却又不报错相关的知识,希望对你有一定的参考价值。

一个高级搜索功能,导致动态生成的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|') or Instr('|'&USA_Major&'|','|1149|') or Instr('|'&USA_Major&'|','|626|') or Instr('|'&USA_Major&'|','|594|'))

先肯定的回答你,这段SQL语句就算在放大500倍,SQL也能查询出来(速度要看你服务器能力了),所以不是语句长度问题。开销是在查询上。
再分析你的条件,你的大概意思是想查出ID不为空并且为那些工号的行。你应该把所有OR的条件括号起来,否则系统认为ID不为空并且不为521
最后建议你语句改成:
select * from School where id in(Instr(\'|\'&USA_Major&\'|\',\'|521|\',\'|\'&USA_Major&\'|\',\'|557|\'),……)
参考技术A select
*
from
user-info
a
left
outer
join
buyer-in
b
on
a.buyerid=b.buyerid
where
a.aname=?
你已经对表重新命名还用表名,这样就会提示错误。请用移送语句!
参考技术B 只有一种可能性 你sql语句错误。可以将sql语句输出在数据库里执行以下查询就知道了 。。。。还真没见过这么多。。。。 参考技术C 一个字"难"

在PLSQL, sql语句中带有中文的查询条件查询不到数据

使用PLSQL查询时,查询条件里有中文查不出结果同时也不报错,而且表里该数据又存在,查询英文可以使用,这是PLSQL字符编码问题。

解决办法就是设置一个系统环境变量就好了。

右击“计算机”-“属性”-“高级系统设置”-“环境变量”,在系统变量下,

“新建” 变量名:NLS_LANG;

变量值:AMERICAN_AMERICA.AL32UTF8

最后重启PLSQL就好了。

以上是关于SQL语句太长,无查询结果,却又不报错的主要内容,如果未能解决你的问题,请参考以下文章

在PLSQL, sql语句中带有中文的查询条件查询不到数据

asp的数据库查询语句

sqli~less5-8

sql语句将EXCEL导入SQL数字太长引起SQL显示错误E+

oracle 10g中怎样执行很长的sql语句呢(最长可能有10万+字符)

sqlilab1-4关