mapreducer清洗实操json格式转化日期_SQL中Json操作

有时候用python对SQL中的数据进行处理时,发现数据库里面存储的本来就是json, 如果我用python去处理,很是费力。
这里有一个简单的方法,就是SQL Server本来就支持json

随着JSON的流行,SQL Server2016开始支持JSON数据类型,不仅可以直接输出JSON格式的结果集,还能读取JSON格式的数据。对于有用到JSON格式的应用程式来说,这无疑是一利器,因为不再需要使用http://JSON.Net这类工具进行分析和处理JSON数据,直接利用SQL Server内置函数就可以处理,轻松将查询结果输出为JSON格式,或者搜索JSON文件内容。下面通过实例的方式,展现SQL Server 2016这一新功能。

1. 将查询结果输出JSON格式
要将SELECT语句的结果以JSON输出,最简单的方法是在后面加上FOR JSON AUTO:
若要为FOR JSON加上Root Key,可以用ROOT选项来自定义ROOT Key的名称:
若要自定义输出JSON格式的结构是,必须使用JSONPATH。若SELECT的列中,存在列名名称相同时,必须用别名重命名才能正常查询,
为NULL的数据在输出JSON时,会被忽略,若想要让NULL的字段也显示出来,可以加上选项INCLUDE_NULL_VALUES,该选项也适用于AUTO。

2.1 JSON 函数

使用本节中页面中描述的功能来验证或更改JSON文本或提取简单或复杂的值。

e3a8f388fff8cce0daf19f3abfce16b5.png

image


有关在SQL Server中内置JSON支持的更多信息,请参阅JSON数据(SQL Server)。

2.2 ISJSON

测试字符串是否包含有效的JSON。
参数:
表达式: 要测试的字符串
返回值:
如果字符串红包含有效的json,则返回1;否则返回0
例子:

DECLARE @param <data type>
SET @param = <value>
IF (ISJSON(@param) > 0)BEGINEND

以下返回列包含有效JSON的行。

SELECT id,json_col
FROM tab1
WHERE ISJSON(json_col) >0

2.3 JSON_VALUE
从JSON字符串中提取标量值。

要从JSON字符串而不是标量值中提取对象或数组,请参阅JSON_QUERY(Transact-SQL)。有关JSON_VALUE和JSON_QUERY之间的差异的信息,请参阅比较JSON_VALUE和JSON_QUERY。

2.4 JSON_QUERY
从JSON字符串中提取对象或数组。

要从JSON字符串而不是对象或数组中提取标量值,请参阅JSON_VALUE(Transact-SQL)。有关JSON_VALUE和JSON_QUERY之间的差异的信息,请参阅比较JSON_VALUE和JSON_QUERY。

2.5 JSON_MODIFY
更新JSON字符串中的属性值,并返回更新的JSON字符串。

举个例子:
如果我需要对以下结果找出日期最小的:

SELECT * 
 FROM school_7..StudentCourseItem 
 WHERE Student_id = 11449387 AND ItemType_id = 2

2df3220a7c9ab48443307ed550be87b9.png

需要拿出数据,将字符串转化为时间,然后比较大小。
如果用以下语句:

SELECT DATEADD(HOUR,+1,min(JSON_VALUE(ExtraData,'$.enrollDate')))  as [enroll_date] 
 FROM school_7..StudentCourseItem 
 WHERE Student_id = 11449387 AND ItemType_id = 2 
 AND JSON_VALUE(ExtraData,'$.levelNo') in (7,8,9)

c3e1b2f6f0e73ca661f42404f9193112.png

一条语句就够了。
好处显然易见。

参考: https://www.cnblogs.com/wangjiming/p/7407530.htmlhttps://blog.csdn.net/weixin_39934264/article/details/80450591

更多精彩,请关注微信公众号:python爱好部落

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值