显示查询字符串=256 ???

aminic 2003-08-19 05:40:33
declare @a varchar(1000)
set @a='select ca,ab,ac,dd,ee,af,dg,hh,cj,dk,al,asd, from asd,fa,sd,fa,sd,fa,sd,fgs,df,gsd,fgsd,fgs,dfa,sdfas,dfa,sasd,f where a=a,b=b,c=c,d=d,e=e,.....'

像上面的这个@a变量将一个大于256个字符的字符串给它,
然后用select @a显示时只显示前256个字符,
但是用
select len(@a)
测它的长度却大于256, 我做的是一个查询这样在执行查询时就不正确查询语句不完整,
谁知道为什么大于256的字符串显示时不完整??

真头痛。。。

那位大侠知道原因?
先谢谢啦!!
...全文
25 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aminic 2003-08-19
  • 打赏
  • 举报
回复
OK,可以了谢谢大家!!!
lifeforu 2003-08-19
  • 打赏
  • 举报
回复
仅仅是显示(select @a)的话更改你的查询分析器选项->结果->每列最多字符数为8000就可以
执行的话exec(@a)应该没有问题
注意declare @a varchar(8000)
aminic 2003-08-19
  • 打赏
  • 举报
回复
不行啊,256个字符正好到where后的第一个条件"="这点,后面的就说列名错误,郁闷列名怎会有错?还是字符串太长了谁有解决方法啊?
hjb111 2003-08-19
  • 打赏
  • 举报
回复
可以处理到长度为4000的字符,不会的吧!
pengdali 2003-08-19
  • 打赏
  • 举报
回复
不会的,select不出来,你可以用print出来,
你用:

declare @a varchar(8000),@b varchar(8000)
set @a='select ca,ab,ac,dd,ee,af,dg,hh,cj,dk,al,asd, from asd,fa,sd,fa,sd,fa,sd,fgs,df,gsd,fgsd,fgs,dfa,sdfas,dfa,sasd,f where a=a,b=b,c=c,d=d,e=e,.....'
exec(@a+@b) 都可以

你调试的时候:
declare @a varchar(8000)
set @a='select ca,ab,ac,dd,ee,af,dg,hh,cj,dk,al,asd, from asd,fa,sd,fa,sd,fa,sd,fgs,df,gsd,fgsd,fgs,dfa,sdfas,dfa,sasd,f where a=a,b=b,c=c,d=d,e=e,.....'

print @a

就可以看到所有的字符了。
pengdali 2003-08-19
  • 打赏
  • 举报
回复
SET TEXTSIZE
指定由 SELECT 语句返回的 text 和 ntext 数据的大小。

语法
SET TEXTSIZE { number }

参数
number

是 text 数据的大小(一个整数),以字节为单位。SET TEXTSIZE 的最大设置为 2 GB(以字节为单位指定)。设置值为 0 时将大小重置为默认值 (4 KB)。

注释
设置 SET TEXTSIZE 会影响 @@TEXTSIZE 函数。

DB-Library 变量 DBTEXTLIMIT 也限制由 SELECT 语句返回的 text 数据大小。如果将 DBTEXTLIMIT 设置为小于 TEXTSIZE 的大小,将只返回 DBTEXTLIMIT 所指定的数量。有关更多信息,请参见 SQL Server 联机丛书中的"用于 C 语言的 DB-Library 程序设计"。

SQL Server ODBC 驱动程序和用于 SQL Server 的 Microsoft OLE DB 提供程序在连接时自动将 TEXTSIZE 设置为 2147483647。

SET TEXTSIZE 的设置是在执行或运行时设置,而不是在分析时设置。

权限
SET TEXTSIZE 权限默认授予所有用户。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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