首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQL Server2008中生成JSON并插入到另一个表中

如何在SQL Server2008中生成JSON并插入到另一个表中
EN

Stack Overflow用户
提问于 2019-04-15 01:59:05
回答 1查看 76关注 0票数 1

我正在从事SQL Server 2008的工作。我必须从customer表生成json数据并插入到CustomerJSON表中。SQL Server 2016具有原生JSON功能,但不幸的是,我只能使用SQL Server 2008。

我使用了以下SQL语句:

代码语言:javascript
复制
Insert into CustomerJSON (Email, CustomerData)
    select 
        Email, 
        stuff((select ',' + '{"email":' + email + 
                      ',"firstName":"' + FirstName + '"' +
                      ',"lastName":"' + LastName + '"' +
                      ',"phoneNumber":"' + PhoneNumber+ '"' +'}'
               from Customer
               for xml path('')), 1, 1, '') 
    from  
        Customer

正如您在屏幕截图中看到的,生成的JSON包含所有四行的数据。但是,我希望从Customer表的每一行构造JSON,而不是连接所有行。作为参考,我使用了SQL Server SELECT to JSON function

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-15 02:19:41

您可以使用:

代码语言:javascript
复制
Insert into CustomerJSON (Email, CustomerData)
select Email , STUFF((
    select ',' + 
        '{"email":' + email
        + ',"firstName":"' + FirstName + '"'
        + ',"lastName":"' + LastName + '"'
        + ',"phoneNumber":"' + LastName + '"'
        +'}'

    from Customer c2
    where c2.Customerid = c.Customerid   -- correlation
    for xml path('')),1,1,'') 
from  Customer c;

如果CustomerId是PK(很可能),那么您不需要STUFF and FOR XML,而是简单地使用+连接,并使用ISNULL处理可为空的列

代码语言:javascript
复制
Insert into CustomerJSON (Email, CustomerData)
select Email , 
        '{"email":' + email 
        + ',"firstName":"' + FirstName + '"'
        + ',"lastName":"' + LastName + '"'
        + ',"phoneNumber":"' + LastName + '"'
        +'}'
from  Customer c;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55678357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档