SQL Server parseJSON函数将JSON解析成Table
在SQL Server 2016版本之后,微软引入了一种新的函数PARSEJSON(),该函数允许将JSON数据解析成表格形式。这个函数的引入使得在SQL Server中处理JSON数据变得更加容易和灵活。在本篇文章中,我们将介绍如何使用PARSEJSON()函数以及一些常见的用例。
什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易读性和易编写为特点。JSON格式通常用于Web应用程序之间的数据传输。JSON数据由键值对组成,并使用大括号({})表示一个对象,使用方括号([])表示一个数组。
以下是JSON的一个示例:
{
"name": "John",
"age": 30,
"city": "New York"
}
SQL Server中的parseJSON函数
PARSEJSON()是SQL Server 2016及更高版本中的一个内置函数,它将JSON字符串解析为表格形式。该函数接受一个JSON字符串作为输入,并返回一个表格,表格的列与JSON对象的属性对应。
以下是PARSEJSON()函数的语法:
PARSEJSON ( 'json_expression' )
json_expression是一个字符串,它包含要解析的JSON数据。
使用parseJSON函数解析JSON
我们将通过一个简单的示例来演示如何使用PARSEJSON()函数解析JSON数据。
假设我们有以下JSON数据:
{
"employees": [
{ "name": "John", "age": 30, "city": "New York" },
{ "name": "Jane", "age": 25, "city": "Los Angeles" },
{ "name": "Mike", "age": 35, "city": "Chicago" }
]
}
我们可以使用PARSEJSON()函数来解析这个JSON数据,并将其存储在一个表格中:
DECLARE @json NVARCHAR(MAX) = '{
"employees": [
{ "name": "John", "age": 30, "city": "New York" },
{ "name": "Jane", "age": 25, "city": "Los Angeles" },
{ "name": "Mike", "age": 35, "city": "Chicago" }
]
}'
SELECT *
FROM OPENJSON(@json, '$.employees')
WITH (
name NVARCHAR(50),
age INT,
city NVARCHAR(50)
)
上述代码中,我们首先将JSON字符串存储在一个变量中,然后使用OPENJSON()函数将其解析为表格形式。OPENJSON()函数接受两个参数:第一个参数是要解析的JSON字符串,第二个参数是一个路径表达式,用于指定要解析的JSON数据的路径。在这个例子中,我们使用$.employees作为路径表达式,它指定了要解析的JSON数据是employees数组。
WITH子句用于指定解析后的表格的列。在这个例子中,我们将name、age和city作为列名,并指定了它们的数据类型。
运行上述代码后,我们会得到一个表格,其中包含了按照JSON数据解析的结果。
parseJSON函数的更多用例
除了上述示例中的基本用法外,PARSEJSON()函数还可以用于更复杂的操作。以下是一些常见的用例。
解析嵌套的JSON数据
PARSEJSON()函数可以处理嵌套的JSON数据,即JSON对象或数组中包含其他JSON对象或数组的情况。
以下是一个示例:
{
"students": [
{
"name": "John",
"age": 20,
"courses": [
{ "name": "Math", "grade": 90 },
{ "name": "English", "grade": 85 }
]
},
{
"name": "Jane",
"age": 22,
"courses": [
{ "name": "Physics", "grade": 95 },
{ "name": "Chemistry", "grade": 88 }
]
}
]
}
我们可以使用PARSEJSON()函数来解析这个嵌套的JSON数据,并将其存储在多个表格中:
DECLARE @json NV
















