Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将json数组与表合并(SQL Server)_Json_Sql Server_Join - Fatal编程技术网

如何将json数组与表合并(SQL Server)

如何将json数组与表合并(SQL Server),json,sql-server,join,Json,Sql Server,Join,我有两行json,我想在id上加入到一个select中 样本表A A. [{id:1,name:Alice},{id:2,name:Bob}] [{id:5,姓名:Charlie},{id:6,姓名:Dale} 首先,这假设您的JSON实际上是有效的。没有引用您的元素id和名称,因此JSON实际上是无效的。此外,我假设您的预期结果是错误的,因为Charlie的年龄为20岁,但该年龄属于id值为3的人,Charlie的id为5 无论如何,我们可以通过子查询实现这一点: 创建表dbo.tablean

我有两行json,我想在id上加入到一个select中

样本表A

A. [{id:1,name:Alice},{id:2,name:Bob}] [{id:5,姓名:Charlie},{id:6,姓名:Dale} 首先,这假设您的JSON实际上是有效的。没有引用您的元素id和名称,因此JSON实际上是无效的。此外,我假设您的预期结果是错误的,因为Charlie的年龄为20岁,但该年龄属于id值为3的人,Charlie的id为5

无论如何,我们可以通过子查询实现这一点:

创建表dbo.tableanvarmax; 插入到dbo.TableA中 VALUESN'[{id:1,name:Alice},{id:2,name:Bob}], N'[{id:5,姓名:查理},{id:6,姓名:戴尔}]; 去 创建表dbo.TableB id int,age int; 插入dbo.TableB id,age 值1,30, 2,32, 3,20, 4,14; 去 选择选择OJ.id, OJ.[姓名], B.年龄 来自OPENJSONA.a 使用id int, [姓名]nvarchar50 OJ 在OJ.id=B.id上左连接dbo.TableB 对于JSON AUTO a 来自dbo.TableA; 去 DROP TABLE dbo.TableA; 删除表dbo.TableB;
好的,那么你的问题是什么?你有什么不起作用?你的JSON字段名没有被引用吗?我不认为openjson可以与没有被引用的字段名一起工作,所以TableA中的每一行都是一个单独的数组?它只是第二行的一个输入错误,没有关闭该行中的数组?@squillman是的。@Larnu我无法在多行上使用openjson。W我们希望将每个单元格连接到另一个表。