SQLServer 解析JSON字符串
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,-------------------------------------------------------- 解析字符串函数 ----------
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
云之行互联网科技
云信互联网科技有限公司
科技赋能下的互联网金融
金融科技创新监管互联网金融
与互联网科技公司
深圳互联网络科技有限公司
互联网 卓越科技
成都狮子座互联网科技
互联网科技热点资讯
厦门比较好的科技互联网公司
江阴互联网智能科技产品进口
河南住房之家互联网科技
阿里互联网科技企业
中科明德北京互联网科技
黑云互联网科技有限公司
21世纪互联网科技成就
宇信科技在杭州互联网排第几
好易买互联网科技
深圳互联网科技园地址
颐高云石互联网科技
互联网科技集团
迪茉互联网科技
贷财互联网科技
友谊互联网络科技
创业天下互联网科技有限公司
佳云科技和互联网广告
阿里互联网科技企业
群盈汇互联网科技有限公司
小米互联网科技园入驻
山东蛋芒互联网科技有限公司