讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

Laper
Laper

剧本策划到成片协作

updream

一键生成高质量推广成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

如何在SQL存储过程中解析JSON格式参数_使用JSON_VALUE函数处理

轻墨同学_9825

轻墨同学_9825

发布时间:2026-05-05 17:11:00

|

658人浏览过

|

来源于php中文网

原创

SQL Server存储过程解析JSON需用NVARCHAR(MAX)参数并先ISJSON校验;JSON_VALUE仅提取标量值且路径须精确,中文键名需转义;多字段提取应优先用OPENJSON而非多次JSON_VALUE。

如何在sql存储过程中解析json格式参数_使用json_value函数处理

SQL Server 存储过程中能直接用 JSON_VALUE 解析入参,但前提是入参是合法 JSON 字符串且路径写对;否则返回 NULL 或报错,不是函数没生效,而是输入或路径错了。

存储过程参数必须声明为 NVARCHAR(MAX)

SQL Server 不支持原生 JSON 数据类型作为参数,只能用字符串承载。若误用 VARCHAR,中文键名、emoji 或带 Unicode 的值可能被截断或乱码:

  • NVARCHAR 是必须的,JSON_VALUE 内部按 Unicode 处理路径和内容
  • 长度建议用 MAX,避免截断长 JSON(比如含 Base64 图片字段)
  • 不要用 TEXT 或 XML 类型传参,它们不兼容 JSON 函数

JSON_VALUE 提取标量值时路径必须精确匹配

它只返回字符串、数字、布尔、null 这类单值;一旦路径指向对象或数组,结果就是 NULL,不会报错,容易误判成功:

cn-json-diff
cn-json-diff

比较两个 JSON 文件并显示差异。支持嵌套结构、数组及值变更。纯 Python 标准库实现,无需 API 密钥。

下载
  • 正确:路径 '$.name' → 返回 'Alice'(字符串)
  • 错误:路径 '$' 或 '$.address'(address 是对象)→ 返回 NULL,应改用 JSON_QUERY
  • 中文键名要加双引号转义:路径写成 '$.["收货地址"]',不能写 '$.收货地址'
  • 数组元素用方括号:提取第一个订单的金额 → '$[0].amount'

必须先用 ISJSON() 校验再解析

用户传来的 JSON 可能格式错误(缺引号、逗号错位、控制字符),JSON_VALUE 遇到非法 JSON 会静默返回 NULL,而不是抛异常:

  • 在存储过程开头加判断:IF ISJSON(@json_param) = 0 BEGIN RAISERROR('Invalid JSON', 16, 1) RETURN END
  • ISJSON() 返回 1 才代表可安全解析,返回 0 或 NULL 都不可信
  • 别依赖 TRY...CATCH 捕获 JSON_VALUE 错误——它本身不抛异常

嵌套深、字段多时优先用 OPENJSON 而非连写多个 JSON_VALUE

当需要从同一段 JSON 中提取 5 个以上字段,或字段来自不同层级(如 $.user.name 和 $.order.items[0].price),硬写一堆 JSON_VALUE 不仅难读,性能也差:

  • OPENJSON(@json_param) WITH (name NVARCHAR(50) '$.user.name', price DECIMAL(10,2) '$.order.items[0].price') 一次解析,结构清晰
  • OPENJSON 自动处理 null 值映射,JSON_VALUE 对缺失键也返回 NULL,但无法区分“键不存在”和“键值为 null”
  • 注意:OPENJSON 是行集函数,需搭配 SELECT 或 INSERT INTO #temp 使用,不能直接赋值给变量

最常被忽略的一点:SQL Server 的 JSON 函数全部基于字符串解析,没有缓存机制。如果同一段 JSON 在一个存储过程中被反复用 JSON_VALUE 提取十几次,实际做了十几次完整解析——这种场景应该先用 OPENJSON 一次性展开,再查临时表。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2295

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3762

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1256

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4359

2025.09.10

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6611

2023.08.11

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

40

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

40

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

60

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn