写了一个超长的sql查询,因为涉及到十几个数据库的多个表,用加号一个一个的组合sql代码,写完后PRINT输出这个变量,发现超过8192个字符的所有代码都被截断了。
可资料上不是说MAX最大可以支持2G的字符的吗,为什么我这里只能容纳8192个字符呢
希望知道的朋友能帮下,谢谢了

解决方案 »

  1.   

    print问退
    varchar(max)支持2g数据
      

  2.   

    你是定义一个变量接受你超长的sql语句吗?超长的sql 语句最长也是4000字符啊!
    你把你的组合分步实现就好了,搞那么长做什么?
      

  3.   


    因为是做数据统计用的,而且涉及到十几个数据库的多个表,所以生成的sql代码非常的长。
      

  4.   

    我用的是nvarchar变量,因为sp_executesql不支持varchar所以只能用nvarchar变量
      

  5.   

    对Print如果消息字符串为非 Unicode 字符串,则最长不得超过 8,000 个字符;如果消息字符串为 Unicode 字符串,则最长不得超过 4,000 个字符。超过最大长度的字符串会被截断。
      

  6.   

    varchar(max) 遇到 非varchar(max)的时候,会转为 非varchar(max)e.g
    declare @s varchar(max)
    set @s = replicate('s',9999)
    select len(@s)declare @s1 varchar(max)
    set @s1 = 's'
    set @s = replicate(@s1,9999)
    select len(@s)
    --------------------
    8000(1 行受影响)
    --------------------
    9999