【问题标题】:Split JSON data in SQL Server column在 SQL Server 列中拆分 JSON 数据
【发布时间】:2020-02-19 03:46:31
【问题描述】:

我在 SQL Server 中有一个表,它有一个 address 字符串数据类型的列。

地址值如

{"line1":"Nav Place Road","line2":"Nyork City","line3":"USA 34576"}

我想通过选择查询在单独的列 line1, line2, line3, line4 中获得结果。

我尝试使用拆分功能,但我无法得到正确的结果。

【问题讨论】:

  • 不要在单个列中存储多个这样的值 - 这违反数据库设计的第一范式
  • 所以你的地址栏是这样的,对吧? line1:Nav Place Road,line2:Nyork City,line3:USA 34576
  • @marc_s 或者换句话说,在这样的列中存储多个值是很好。但是不要期望从 SQL 查询中访问它们;仅来自您的客户端应用程序。
  • 存储为 XML 会更好;至少你可以查询它。

标签: sql sql-server


【解决方案1】:

您可以使用JSON Select,它提供了几个用于从 JSON 中提取不同数据类型的函数。对于您的示例,您可以执行以下操作:

select 
    dbo.JsonNVarChar450(address, 'line1') as line1,
    dbo.JsonNVarChar450(address, 'line2') as line2,
    dbo.JsonNVarChar450(address, 'line3') as line3
from your_table

披露: 我是 JSON Select 的作者,因此有兴趣使用它:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多