当前位置: 首页 > 面试题库 >

如何将JSON对象作为nvarchar插入SQL Server 2016

扶誉
2023-03-14
问题内容

我想在我的SQL Server 2016表中插入一些JSON对象。

我的表结构如下:

field           type            nullable   default
name          | nvarchar(max) | true     | Null
age           | nvarchar(max) | true     | Null
homeAddress   | nvarchar(max) | true     | Null
officeAddress | nvarchar(max) | true     | Null

我正在使用以下查询来插入我的数据:

DECLARE @json NVARCHAR(MAX) = N'{"name":"John Smith","age":32,"homeAddress":{"addr1":"123rd West Street, Willow Apt","addr2":"#55 Suite","zipCode":12345,"city":"Austin","state":"TX"},"officeAddress":{"addr1":"23rd West Street","addr2":"","zipCode":12345,"city":"Austin","state":"TX"}}';

INSERT INTO Employee 
    SELECT * 
    FROM OPENJSON(@json)
    WITH (name nvarchar(50), 
          age int, 
          homeAddress nvarchar(max), 
          officeAddress nvarchar(max)
         );

但是,表中仅填充name和的值age。这两个homeAddressofficeAddress值是NULL。

我的查询出了什么问题?如何将JSON对象作为nvarchar插入?


问题答案:

我承认我对SQL Server 2016中的JSON内容没有任何经验,但是请看一下本教程:

https://docs.microsoft.com/zh-cn/sql/relational-databases/json/solve-common-
issues-with-json-in-sql-server

似乎AS JSON在您的NVARCHAR(max)列之后添加可能是您需要的:

INSERT INTO Employee 
    SELECT * 
    FROM OPENJSON(@json)
    WITH (name nvarchar(50), 
          age int, 
          homeAddress nvarchar(max) AS JSON, 
          officeAddress nvarchar(max) AS JSON
         );


 类似资料:
  • 我正在努力将JSON对象插入我的postgres v9.4 DB。我已经将名为“evtjson”的列定义为类型json(而不是jsonb)。 我试图在Java(jdk1.8)中使用准备好的语句将Json对象(使用JEEjavax.json库构建)插入到列中,但我一直遇到SQLException错误。 我使用以下方法创建JSON对象: 然后,我将这个对象作为参数传递给另一个方法,以使用准备好的语句将

  • 问题内容: 我目前正在尝试将收到的JSON对象转换为具有相同属性的TypeScript类,但无法使其正常工作。我究竟做错了什么? 员工阶层 员工字符串 我的尝试 链接到打字稿游乐场 问题答案: 编译器允许您将返回的对象强制转换为类的原因是因为typescript基于结构子类型。 您实际上并没有的实例,而是拥有一个具有相同属性的对象(如在控制台中看到的)。 一个简单的例子: (操场上的代码) 没有错

  • 问题内容: 我需要将一些对象序列化为JSON并发送到WebService。如何使用org.json库?否则我将不得不使用另一个?这是我需要序列化的类: 我只放了类的变量和构造函数,但也有getter和setter方法。所以如果有人可以帮忙 问题答案: 没有注释的简单方法是使用Gson库 就那么简单:

  • 问题内容: 是否有将JavaScript对象编码为JSON的好方法? 我有一个键值对列表…其中名称来自复选框,根据是否选中该框,值为true或false: 我想将这些值传递到JSON对象中,然后存储到cookie中以呈现表(将根据用户检查的内容添加列)。 有人知道解决方案吗? 问题答案: 我认为您可以使用JSON.stringify:

  • 我有一个字符串(jsonData)通过Jackson对象映射器映射到json,如下所示,映射到JaxB。 我能够很好地映射到上面的字符串。然而,我在映射到jooq JSON对象时遇到了问题。我想我现在必须将jsonData转换为jooq JSON。 我该怎么做? 或者我必须创建某种包装? 由jooq配置的DTO

  • 问题内容: 试图让我了解BS的html构建。 我正在尝试插入新标签: 当我检查结果时,我得到: 因此,我要插入一个针对Websafe html进行了清理的字符串。 我希望看到的是: 如何在带有ID的位置3中插入新标签? 问题答案: 使用工厂方法创建新元素: 并插入: