Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json分配给变量时,SQL Server中的数据被截断_Sql_Sql Server_Tsql_Sql Server 2016 - Fatal编程技术网

将json分配给变量时,SQL Server中的数据被截断

将json分配给变量时,SQL Server中的数据被截断,sql,sql-server,tsql,sql-server-2016,Sql,Sql Server,Tsql,Sql Server 2016,我想使用T-SQL生成JSON并将其存储在变量中。当我将JSON分配给NVARCHARMAX时,数据会被截断,但如果我直接使用select语句,数据不会被截断 DECLARE @DateOne DATETIME, @DateTwo DATETIME,@DrillThroughData NVARCHAR(MAX) SELECT @DateOne = '2016-01-01',@DateTwo = '2017-07-31' CREATE TABLE #DrillThroughData ( [D

我想使用T-SQL生成JSON并将其存储在变量中。当我将JSON分配给NVARCHARMAX时,数据会被截断,但如果我直接使用select语句,数据不会被截断

DECLARE @DateOne DATETIME, @DateTwo DATETIME,@DrillThroughData NVARCHAR(MAX)
SELECT @DateOne = '2016-01-01',@DateTwo = '2017-07-31'

 CREATE TABLE #DrillThroughData
 (
[Date] DATE
,TotalAmountIncome DECIMAL(18,4)
,TotalAmountRefunded DECIMAL(18,4)
,ProductCostIncome DECIMAL(18,4)
,ProductCostRefunded DECIMAL(18,4)
)

INSERT INTO #DrillThroughData
VALUES('2017-07-13',839.2000,-241.4000,0.0000,0.0000)

;WITH CTE AS
     (
    SELECT 1 SNo,CAST(CONVERT(NVARCHAR(6),@DateOne,112)+'01' AS DATE) AS   StartDate  
        UNION ALL 
    SELECT SNo+1 SNo,DATEADD(DAY,1,StartDate ) StartDate 
    FROM CTE WHERE DATEADD(Day,1,StartDate ) <= @DateTwo
)
SELECT StartDate [Date],SNo
INTO #AllDays
FROM CTE
OPTION(MAXRECURSION 0)

-- Data not truncated here.
SELECT ad.[Date]
    ,FORMAT(ad.[Date],'yyyy-MMM') [Month]
    ,ISNULL(d.TotalAmountIncome,0) TotalAmountIncome
    ,ISNULL(d.TotalAmountRefunded,0) TotalAmountRefunded
    ,ISNULL(d.ProductCostIncome,0) ProductCostIncome
    ,ISNULL(d.ProductCostRefunded,0) ProductCostRefunded
FROM  #DrillThroughData d
RIGHT JOIN #AllDays ad
    ON d.[Date] = ad.Date
ORDER BY SNo
FOR JSON AUTO


SET @DrillThroughData = (SELECT ad.[Date]
    ,FORMAT(ad.[Date],'yyyy-MMM') [Month]
    ,ISNULL(d.TotalAmountIncome,0) TotalAmountIncome
    ,ISNULL(d.TotalAmountRefunded,0) TotalAmountRefunded
    ,ISNULL(d.ProductCostIncome,0) ProductCostIncome
    ,ISNULL(d.ProductCostRefunded,0) ProductCostRefunded
FROM  #DrillThroughData d
RIGHT JOIN #AllDays ad
    ON d.[Date] = ad.Date
ORDER BY SNo
FOR JSON AUTO)

-- Data is being Truncated even though the varaible is nvarchar(max)
SELECT @DrillThroughData
未被截断时json的实际长度为88441,但被截断为13680


提前感谢。

这似乎是ssms的一个限制。检查此项答案:可能的重复项您可以随时检查内容的长度(以字节为单位):选择datalength@DrillThroughData;感谢@TheGameiswar,这是SSMS的一个限制,我将在应用程序中获取完整数据。可能重复