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

轻墨同学_9825

轻墨同学_9825

2026-05-05

658人浏览

原创

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,不会报错,容易误判成功:

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

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

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

cn-json-diff
cn-json-diff

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

下载
  • 在存储过程开头加判断: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 一次性展开,再查临时表。

相关专题

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

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

2023.08.07

2295

5

json是什么
json是什么

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

2023.08.23

3762

1

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

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

2023.10.13

1256

3

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

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

2025.09.10

4359

7

sqlserver和mysql区别
sqlserver和mysql区别

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

2023.08.11

6611

4

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

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

2026.11.06

60

12

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

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

2026.11.06

20

13

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

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

2026.11.06

40

10

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

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

2026.11.05

60

12

热门下载

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

精品课程

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

共101课时 | 21.3万人学习

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

共39课时 | 4.9万人学习