sql语句太长,能否拆开执行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句太长,能否拆开执行相关的知识,希望对你有一定的参考价值。
有没有什么串联符。可以串联起来的,
insert into B.B1 (type,owner_id,id)select type,owner_id,""from A.A1 where id=100
这段里面字段好多。我需要添加10个左右的字段。现在就支持4个字段
(type,owner_id,id)select type,owner_id,""
我知道sql里面可以执行好长一句
可是我说的是把他拆开,不管多长,能拆开吗 或者串联
下面是一些常识,有耐心可以看一下。
1、原则上,MS SQL SERVER对SQL条件语句的长度不作限制,起码当前没有人有实际的单条语句没法执行完成的报道,应该几千个字符以内的单条SQL语句都能正常的在MS SQL附带的“SQL Server Management Studio”或“企业管理器”中执行,要不,你试试,也许你就是第一个发现问题的人。
2、如果是编程,使用某些编程软件向SQL Server发送SQL语句的话,受限于编程环境下,字符串的长度或别的因素,可能会有某些不同,如果是那样的话,最常见的做法是将多条SQL语句做成存储过程,放在SQL Server数据库中,程序只需要发送初始条件进行存储过程的调用即可。
3、也就是说,复杂的SQL语句,绝大多数专业工程人员一般都不会用通过客户端直接发向SQL 服务器的方式去执行。如果只是临时的要进行一些SQL数据库的操作,也可以直接在SQL相应的管理工具中做。 参考技术A 请将SQL 贴出来,谢谢!追问
麻烦看看
oracle SELECT语句太长的问题
有个项目需要自动拼接SQL语句,因为需要根据产品分列合计展现多列所以用到了循环拼接中间查询字段部分,如:
trim(to_char(sum(case
when t.PRODUCT_NAME = 'P000000005' then
t.profit
else
0
end),
'99999999.99')) as 产品1
产品数量大致在12个左右,拼接出来的SQL语句长度是在20000字符左右,用long变量承接,在执行SQL语句是,本地WINDOWS下安装的ORACLE 10G是可以执行的,但是服务起上的LINUX下安装的ORACLE 10G下执行此语句就会报 ORA-00972:identifier is too long
请问这个ORACLE问题可以通过数据库配置解决吗?如果可以应该如何配置?
感谢大家的回答,问题原因已经找到了,其实说来很简单,是字符集的问题。因为在UTF-8和GB1232中一个中文字符的长度是不一样的,一个是占2位,一个是占三位,我两个ORACLE数据库用了不同的字符集。而ORACLE的SQL语句中,AS的字段名必须小于30位,我的产品名称中有一个12中文字的,所以在UTF-8中12个中文就变成36个字符,超过了字段名30位的最大长度。而在GB1232中是24位的长度,可以执行。顺便给自己加分,呵呵。这么奇葩的问题也只有我自己能找到原因吧。
你再仔细检查一下sql语句,和 程序的执行过程。
参考:按照这个错误的原因和解决方案。
Error:
ORA-00972: identifier is too long
Cause:
You tried to reference a table, cluster, view, index, synonym, tablespace, or username with a value that was longer than 30 characters.
Action:
The options to resolve this Oracle error are:
Names for tables, clusters, views, indexes, synonyms, tablespaces, and usernames must be 30 characters or less. You must shorten the name to no more than 30 characters for these objects. 参考技术A 应该不是总长度的问题吧。我通常都用varchar2来存贮字符,可以存储32767。
但是要注意,有时候在系统的一些函数里varchar2只支持4000,但是它本身是可以存储32767的。 参考技术B 实在没办法就想办法缩短一下SQL语句吧!
比如说用
decode替换case when
to_char(decode(t.PRODUCT_NAME,'P000000005',t.profit,0)) as 产品1 参考技术C 建议你仔细检查下SQL,看两边的是否一致,可以将SQL一段一段的放到long变量里面执行,看能否通过,一步一步排查原因。 参考技术D 一步一步测试,可以打出来看看你拼接的sql语句
以上是关于sql语句太长,能否拆开执行的主要内容,如果未能解决你的问题,请参考以下文章