.net core json 为null输出_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文本或提取简单或复杂的值。

b6f63597606bbc8e37d00b6547ee896d.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

edda993bbdf974081183d3eaae266e51.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)

968395a2ea15c27f68f94799bf26676b.png

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要向 ASP.NET Core MVC 模型添加列表,并将其保存到数据库,可以按照以下步骤进行操作: 1. 首先,在模型类定义一个 List 属性,如下所示: ```csharp public class MyModel { public int Id { get; set; } public List<string> MyList { get; set; } } ``` 2. 在数据库创建一个表,其包含一个主键列和一个用于存储列表数据的 JSON 列。例如: ```sql CREATE TABLE MyTable ( Id INT IDENTITY(1,1) PRIMARY KEY, MyList JSON NOT NULL ); ``` 3. 在视图,使用 HTML 的 form 元素来提交表单数据。在表单,可以通过使用 for 循环和 Html.HiddenFor() 方法来将列表的每个元素都作为隐藏字段提交。例如: ```html @model MyModel @using (Html.BeginForm()) { for (int i = 0; i < Model.MyList.Count; i++) { @Html.HiddenFor(m => m.MyList[i]) } <input type="submit" value="Submit" /> } ``` 4. 在控制器的 POST 方法,可以将列表数据保存到数据库。例如: ```csharp [HttpPost] public IActionResult MyAction(MyModel model) { // Convert the list to a JSON string string json = JsonConvert.SerializeObject(model.MyList); // Insert the data into the database string connectionString = "your_connection_string_here"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string sql = "INSERT INTO MyTable (MyList) VALUES (@MyList);"; SqlCommand command = new SqlCommand(sql, connection); command.Parameters.AddWithValue("@MyList", json); command.ExecuteNonQuery(); } return RedirectToAction("Index"); } ``` 这样就可以向 ASP.NET Core MVC 模型添加列表,并将其保存到数据库了。请注意,此示例使用了 Newtonsoft.Json 库将列表转换为 JSON 字符串。如果您使用的是 .NET Core 3.0 或更高版本,则可以使用 System.Text.Json 库来完成此操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值