SQL SERVER -- JSON处理

MSSQL 数据库版本,数据库名,查询

复制代码
select 
    LEFT(Convert(NVarchar(50),ServerProperty('productversion')), CHARINDEX('.', Convert(NVarchar(50),ServerProperty('productversion'))) - 1) MainVersion
    ,ServerProperty('productversion') ProductVersion
    ,ServerProperty('productlevel') ProductLevel
    ,ServerProperty('edition') Edition
    ,@@version FullVersion
    ,(SELECT compatibility_level FROM sys.databases WHERE name=DB_NAME()) CompatibilityLevel
    ,DB_NAME() DBName

--修改
-- ALTER DATABASE 数据库名称 SET COMPATIBILITY_LEVEL = 130
复制代码

 

 

 

SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型、XML索引及各种管理或输出XML格式的函数。

随着JSON的流行,SQL Server2016开始支持JSON数据类型,不仅可以直接输出JSON格式的结果集,还能读取JSON格式的数据

(JSON相关函数,参考:https://learn.microsoft.com/zh-cn/sql/t-sql/functions/json-functions-transact-sql?view=sql-server-ver16 )

-- 行记录转JSON,以及 JSON 转行记录

复制代码
 1 Select top 3 '数据库中加载' Dsp, MatID,Code,Name from MMF
 2 
 3 Declare @Infos NVarchar(Max)
 4 
 5 Select @Infos=(Select top 3 MatID,Code,Name from MMF for Json Path)
 6 
 7 Select @Infos 返回值
 8 
 9 Select '解析JSON' Dsp, * from OpenJson(@Infos) with(
10  MatID NVarchar(50),
11  Code NVarchar(50),
12  Name NVarchar(50)
13 )
复制代码

 

 

 

-- JSON 字符串 多级转换

Declare @JsonStr Nvarchar(Max)='[{"State":0,"Name":"语文","ReMark":"了解国学信息","RepDtl":[{"ID":1,"Age":11},{"ID":2,"Age":12},{"ID":3,"Age":13}]},{"State":2,"Name":"数学","ReMark":"九天算术","RepDtl":[]},{"State":21,"Name":"英语","ReMark":"全球畅游","RepDtl":[{"ID":1,"Age":31},{"ID":2,"Age":32},{"ID":3,"Age":33}]}]'

 

 

转换处理 >> cross apply 

select Row_Number()Over(Order by tmpB.State,tmpC.ID) RIDX, tmpB.State,tmpC.ID,tmpB.Name,tmpC.Age,tmpB.ReMark
from OpenJson(@JsonStr) tmpA
cross apply openjson(tmpA.value) with (
State Integer,
Name NVarchar(50),
ReMark NVarchar(50),
RepDtl NVarchar(Max) '$.RepDtl' as Json
) tmpB
cross apply openjson(tmpB.RepDtl) with (
ID Integer,
Age Integer
) tmpC

 

>> outer apply  

 

 

posted @   耗喜天涯  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示