SQLServer 解析JSON字符串
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,-------------------------------------------------------- 解析字符串函数 ----------
千家信息网最后更新 2025年11月08日SQLServer 解析JSON字符串
-------------------------------------------------------- 解析字符串函数 --------------------------------------------------------CREATE FUNCTION [dbo].[fn_split](@p_str VARCHAR(8000), @p_split VARCHAR(10))RETURNS @tab TABLE(tid VARCHAR(2000))ASBEGINDECLARE @idx INTDECLARE @len INTSELECT @len = LEN(@p_split), @idx = CHARINDEX(@p_split, @p_str, 1)WHILE(@idx >= 1)BEGININSERT INTO @tab SELECT LEFT(@p_str, @idx - 1)SELECT @p_str = RIGHT(@p_str, LEN(@p_str) - @idx - @len + 1), @idx = CHARINDEX(@p_split, @p_str, 1)ENDif(@p_str <> '') INSERT INTO @tab SELECT @p_strRETURNEND;
--------------------------------- 解析JSON字符串 -----------------------------------p_jsonstr json字符串--p_key 键--返回p_key对应的值CREATE FUNCTION [dbo].[fn_parsejson](@p_jsonstr VARCHAR(8000), @p_key VARCHAR(200)) RETURNS VARCHAR(3000)AS BEGINDECLARE @rtnVal VARCHAR(3000); DECLARE @i INT; DECLARE @jsonkey VARCHAR(200); DECLARE @jsonvalue VARCHAR(1000); DECLARE @json VARCHAR(8000); DECLARE @tmprow VARCHAR(2000); DECLARE @tmpval VARCHAR(2000); IF(@p_jsonstr IS NOT NULL)BEGIN SET @json = REPLACE(@p_jsonstr, '{', ''); SET @json = REPLACE(@json, '}', ''); SET @json = REPLACE(@json, '"', '');DECLARE @json_cur CURSOR; -- 声明外层游标SET @json_cur = CURSOR FOR SELECT tid FROM fn_split(@json, ',');OPEN @json_cur-- 打开游标(外层游标)FETCH NEXT FROM @json_cur INTO @tmprow-- 提取外层游标行WHILE(@@FETCH_STATUS = 0)BEGINIF(@tmprow IS NOT NULL)BEGINSET @i = 0;SET @jsonkey = '';SET @jsonvalue = '';DECLARE @str_cur CURSOR;-- 声明内层游标SET @str_cur = CURSOR FOR SELECT tid FROM fn_split(@tmprow, ':');--第二次拆分后的游标(内层游标)OPEN @str_cur -- 打开游标FETCH NEXT FROM @str_cur INTO @tmpval-- 提取内层游标行WHILE(@@FETCH_STATUS = 0)BEGINIF(@i = 0) BEGINSET @jsonkey = @tmpvalENDIF(@i = 1)BEGINSET @jsonvalue = @tmpvalENDSET @i = @i + 1FETCH NEXT FROM @str_cur into @tmpval-- 内层游标下移一行ENDCLOSE @str_cur-- 关闭内层游标DEALLOCATE @str_cur -- 释放内层游标IF(@jsonkey = @p_key)BEGINSET @rtnVal = @jsonvalueENDENDFETCH NEXT FROM @json_cur INTO @tmprow-- 内层游标结束后,外层游标下移一行ENDCLOSE @json_cur-- 关闭外层游标DEALLOCATE @json_cur-- 释放外层游标END RETURN @rtnVal END使用示例:
Select dbo.fn_parsejson('{"billPrice":"1.67","buyDate":"2009-12-30","currentStatus":"有租约","decoration":"精装","empCode":"174999",","houseId":"F20BEBE259794C858C76122BCBACC71F","id":"36398","isAccompany":"0","isCollect":"1","isOnlyOne":"1","isShotProperty":"1","noCollectReason":"","parking":"0","propertyNo":"5885109","recordDate":"2017-06-08","recordRemark":"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"}','buyDate')
游标
内层
外层
字符
字符串
一行
函数
示例
租约
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
人工智能在网络技术的应用
网络安全团队创建
服务器硬盘灯亮一定有硬盘吗
信息网络技术与布线
创建数据库实例sga
龙骨设备加工软件开发
游戏服务器网络优化
东营 云商网络技术支持
注册信息插入数据库中
数据库的特点是数据能共享
巨人通力服务器怎么查
哈尔滨新华互联网科技学校
数据库技术在会计中的应用
健康宝的软件开发公司
计算机网络技术和测绘
定制化软件开发架构
数据库学生管理系统制作
情报及网络安全保卫工作
跟党走推进网络安全
如何发送网页到服务器
2台服务器合并容量
生死狙击2显示服务器暂未开放
思科网络技术it基础答案
深圳市软件开发制作手机软件
网络安全机构和管理制度
杨浦区创新数据库收费标准
网络安全法制讲座小文
正规网络技术推荐咨询
贵州独山软件开发有限公司
数据库做压力测试工具