我正在使用SQL Server2008。我必须从其中获取JSON格式的数据。我正在使用如下所示的串联方法。以下代码将NULL值替换为空字符串。相反,我想将其设置为NULL。
+ ',"OrderDate":"' + CASE WHEN orderDate IS NULL THEN
'' ELSE CONVERT(varchar(23), orderDate, 20) END + '"}'
orderDate为null时的输出为:“ OrderDate”:“”。相反,我想将其作为“ OrderDate”:NULL。我已经尝试过,
+ ',"OrderDate":' + CASE WHEN orderDate IS NULL THEN
NULL ELSE CONVERT(varchar(23), orderDate, 20) END + '}'
我也尝试过
+ ',"OrderDate":' + CAST(CASE WHEN orderDate IS NULL
THEN NULL ELSE CONVERT(varchar(23), orderDate, 20) END AS
VARCHAR) + '}'
但是JSON本身为NULL。我上面提到的代码片段是创建JSON的较大JSON SQL代码的一部分。
答案 0 :(得分:0)
您应该可以使用接近第二个版本的东西,但需要进行如下调整:
+ ',"OrderDate":' + CASE WHEN orderDate IS NULL THEN
'null' ELSE CONVERT(varchar(23), orderDate, 20) END + '}'
这将使您的JSON格式正确(如下所示)(或JSON的代码段):
{"OrderDate":null}
每当您在JavaScript中使用JSON对象时,如果遇到问题,都可以始终将JSON字符串传递到JSON.parse()
方法中,该方法将构造由您的JSON字符串描述的JavaScript对象。
答案 1 :(得分:0)
您可以使用ISNULL内置函数
实现此目的SELECT '"OrderDate": '+ ISNULL(CONVERT(varchar(23), OrderDate, 20), 'NULL') FROM DateTable
此外,SQL Server提供了生成JSON格式结果的方法。 请检查此链接Format Query Results as JSON with FOR JSON (SQL Server)
复制并粘贴以下查询并执行
-- Create Temp table
CREATE TABLE #TempDateTable (ID INT IDENTITY(1,1), OrderDate DATETIME)
--Insert some value to test
INSERT INTO #TempDateTable VALUES('04/24/2019'), (NULL), ('03/24/2019')
-- Generate JSON format result
SELECT ID, ISNULL(CONVERT(varchar(23), OrderDate, 20), 'NULL') OrderDate
FROM #TempDateTable
FOR JSON AUTO
-- Drop the table
DROP TABLE #TempDateTable