SQL JSON_VALUE() 函数

SQL JSON_VALUE() 函数

SQL JSON_VALUE() 函数接受一个 JSON 字符串并返回一个标量值。它解码 JSON 字符串并沿着预定的路径提取标量值。路径以一定的格式提供,如下所示。

  • ‘$’ - 它引用整个 JSON 对象。

  • ‘$.property1’ - 它引用 JSON 对象中的 property1。

  • ‘$[2]’ - 它引用 JSON 对象中的第二个元素。

  • ‘$.property1.property2[4].property3’ - 它引用 JSON 对象中的嵌套属性。

语法

以下是 SQL JSON_VALUE() 函数的语法

JSON_VALUE ( expression , path )

参数

  • expression − 通常是列的名称或包含JSON文本的变量。

  • path − 指定要提取的属性的JSON路径。如果路径的格式无效,JSON_VALUE将返回错误。

示例

通过以下查询从JSON字符串中检索键值:

SELECT JSON_VALUE('{"Name": "TUTORIALSPOINT"}', '$.Name') AS 'Result';

输出

执行以上查询时,输出如下所示−

+------------------------------------+
|                              Result|
+------------------------------------+
|                    TUzTORIALSPOINT  |
+------------------------------------+

示例

在下面的示例中,我们将明确指定lax到不包含与JSON字符串匹配的参数的路径,并通过使用以下查询来检查结果-

SELECT JSON_VALUE('{"Name": "TUTORIALSPOINT"}', 'lax$.firstName') AS 'Result';

输出

当我们执行上述查询时,输出结果如下:

+------------------------------------+
|                              Result|
+------------------------------------+
|                               NULL |
+------------------------------------+

示例

让我们考虑下面的示例,我们将使用以下查询语句从JSON字符串中获取JSON数组的第二个值-

DECLARE @iphone VARCHAR(MAX)
   = '{
   "Item":"Iphone13",
   "Color":["Green", "Pink", "White"]
   }'
SELECT JSON_VALUE(@iphone,'$.Color[1]') AS JSON_Color

输出

当我们执行上述查询时,输出结果如下所示:

+------------------------------------+
|                         JSON_Color |
+------------------------------------+
|                              Pink  |
+------------------------------------+

示例

让我们考虑另一种情况,我们要通过使用以下查询从JSON数组中检索第一条记录以指定索引位置-

DECLARE @work VARCHAR(4000);
SET @work = N'{
   "Customers": [
      {
         "Name": "XYZ",
         "Age": "23",
         "Address": "101, Sector 5, Gurugram, India",
         "Salary": 105000
      },
      {
         "Name": "ABC",
         "Age": "34",
         "Address": "17, Park Avenue, Mumbai, India",
         "Salary": 780000
      }
   ]
}';
SELECT JSON_VALUE(@work, '.Customers[0].Name') AS 'Name',   JSON_VALUE(@work, '.Customers[0].Age') AS 'Age', 
   JSON_VALUE(@work, '.Customers[0].Address') AS 'Address',   JSON_VALUE(@work, '.Customers[0].Salary') AS 'Salary';

输出

执行上述查询后,输出结果如下所示 −

+-------+-----+-------------------------------+-----------+      
| Name  |Age  |             Address           |  Salary   |
+-------+-----+-------------------------------+-----------+
| XYZ   |23   |101, Sector 5, Gurugram, India | 105000    |
+-------+-----+-------------------------------+-----------+

示例

让我们考虑另一个示例,我们将使用以下查询来检索嵌套的JSON中的值-

DECLARE @work VARCHAR(4000);
SET @work = N'{
   "Customers": [

      {
         "Name": "Revi",
         "Age": "25",
         "Department": {"course":"HTML", "Field":"IT" 
         "Salary": 100000
      },

   ]
}';
SELECT JSON_VALUE(@work, '.Customers[0].Name') AS 'Name',   JSON_VALUE(@work, '.Customers[0].Department.Field') AS 'Field';

输出

执行上述查询后,输出结果显示如下:

+-------+-----+       
| Name  |Field|             
+-------+-----+   
| Revi  |IT   |  
+-------+-----+

示例

让我们来看一个示例,我们将使用严格路径并尝试使用以下查询来检索输出结果。

SELECT JSON_VALUE('{"car": "RX100"}', 'strict$.car') AS 'Output';

输出

执行上述查询后,输出结果如下所示:

+----------------------------------------------+
|                                       Result |
+----------------------------------------------+
|                                        RX100 |
+----------------------------------------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程