You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何让JSON_VALUE遇到空字符串时返回NULL而非空值

SQL Server中JSON_VALUE空字符串转NULL的替代方案

SQL Server原生JSON_VALUE函数本身会严格区分「键不存在/值为NULL」和「值为空字符串」,没有内置参数可以直接让空字符串返回NULL,以下是两种不需要手动写IF判断空字符串的替代方案:


方案1:使用NULLIF函数包裹(最常用、轻量化)

直接在JSON_VALUE外层套NULLIF函数,一行即可完成空字符串到NULL的转换,不需要单独写分支判断:

DECLARE @JsonText varchar(MAX) = '{
    "Test": ""
}'

-- 直接在赋值时用NULLIF处理空串
DECLARE @Name varchar(MAX) = NULLIF(JSON_VALUE(@JsonText, '$.Test'), '') ;

IF (@Name IS NULL)
BEGIN
    SELECT 'Null' AS Result
END
ELSE
BEGIN 
    SELECT 'Empty' AS Result
END

执行上述代码后输出结果为Null,完全符合预期。


方案2:封装自定义标量函数(适合高频使用场景)

如果你需要在多处用到空字符串转NULL的JSON取值逻辑,可以封装为自定义函数,后续调用更简洁:

-- 一次创建,后续可反复调用
CREATE FUNCTION dbo.JsonValueNullIfEmpty(
    @JsonText varchar(MAX),
    @JsonPath varchar(1000)
)
RETURNS varchar(MAX)
AS
BEGIN
    RETURN NULLIF(JSON_VALUE(@JsonText, @JsonPath), '')
END

调用示例:

DECLARE @Name varchar(MAX) = dbo.JsonValueNullIfEmpty(@JsonText, '$.Test')

内容的提问来源于stack exchange,提问作者Riddhish Bambhroliya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:08