从 JSON SQL 查询中删除反斜杠

2024-04-15

我正在使用 SQL Server 查询构造 JSON 对象。我对斜杠有疑问,而且我需要特定格式的数据,如下所述。实际输出中有斜线。我想从输出查询中消除斜杠。

    SELECT (SELECT 
         ('{'+'"value":'+ cast(ISNULL(SP.ACCOUNT_TRAFFIC_DEP_LICENSE_NUMBER,'') as varchar) )                       AS TRAFFIC_DEP_LICENSE_NUMBER
        ,(  '{' +'"value":'+cast(ISNULL(SP.NUMBER_OF_VEHICLES   ,'')    as varchar)     )                                   AS NUMBER_OF_VEHICLES
         ,( '{' +'"value":'+cast(ISNULL(SP.ACCOUNT_TRAFFIC_DEP_LICENSE_START_H_DATE,'') as varchar) )                                       AS TRAFFIC_DEP_LICENSE_START_H_DATE
         ,( '{' +'"value":'+cast(ISNULL(SP.ACCOUNT_TRAFFIC_DEP_LICENSE_END_H_DATE   ,'')    as varchar)     )                           AS TRAFFIC_DEP_LICENSE_END_H_DATE
        ,(  '{' +'"value":'+cast(ISNULL(SP.SUSPENSION_BY_MORROR_STATUS,'')  as varchar)         )                                           AS SUSPENSION_BY_MORROR_STATUS
         ,( '{' +'"value":'+cast(ISNULL(SP.SUSPENSION_BY_VIOLATION  ,'')    as varchar)     )                                           AS SUSPENSION_BY_VIOLATION
         ,( '{' +'"value":'+cast(ISNULL(SP.SUSPENSION_BY_PENALTY        ,'')    as varchar)     )                                           AS SUSPENSION_BY_PENALTY
                from [dbo].[TAMM_CAC_ACCOUNTS_STG]  SP 
                where SP.Account_Reference_Number = CAC.Account_Reference_Number
                AND (
                ACCOUNT_TRAFFIC_DEP_LICENSE_NUMBER IS NOT NULL OR 
                NUMBER_OF_VEHICLES IS NOT NULL OR
                SP.ACCOUNT_TRAFFIC_DEP_LICENSE_END_H_DATE   IS NOT NULL OR
                SP.ACCOUNT_TRAFFIC_DEP_LICENSE_END_H_DATE   IS NOT NULL OR
                SP.SUSPENSION_BY_MORROR_STATUS              IS NOT NULL OR
                SP.SUSPENSION_BY_VIOLATION          IS NOT NULL OR      
                SP.SUSPENSION_BY_PENALTY        IS NOT NULL     )   FOR JSON PATH,INCLUDE_NULL_VALUES

 
 ) AS specifics
            from dbo.Customer_Account CAC

上面的查询给了我想要的输出,但它有反斜杠。

[
  {
    "TRAFFIC_DEP_LICENSE_NUMBER": "{\"value\":0",
    "NUMBER_OF_VEHICLES": "{\"value\":1009",
    "TRAFFIC_DEP_LICENSE_START_H_DATE": "{\"value\":14351229",
    "TRAFFIC_DEP_LICENSE_END_H_DATE": "{\"value\":14351229",
    "SUSPENSION_BY_MORROR_STATUS": "{\"value\":0",
    "SUSPENSION_BY_VIOLATION": "{\"value\":1",
    "SUSPENSION_BY_PENALTY": "{\"value\":1"
  }
]

实际预期产量低于

{
"specific": {
    "TRAFFIC_DEP_LICENSE_NUMBER": {"value": 0},
    "NUMBER_OF_VEHICLES": {"value": 22},
    "TRAFFIC_DEP_LICENSE_START_H_DATE": {"value": 14480608},
    "TRAFFIC_DEP_LICENSE_END_H_DATE": {"value": 14480608},
    "SUSPENSION_BY_MORROR_STATUS": {"value": 0},
    "SUSPENSION_BY_VIOLATION": {"value": 1},
    "SUSPENSION_BY_PENALTY": {"value": 1}
}

如果我正确理解您的问题并且您想要删除特殊字符的转义以生成有效的 JSON 内容,则下一个解决方案可能会有所帮助。

FOR JSON clause escapes https://learn.microsoft.com/en-us/sql/relational-databases/json/how-for-json-escapes-special-characters-and-control-characters-sql-server?view=sql-server-2017#escaping-of-special-characters中的特殊字符JSON输出与\.

...如果源数据包含特殊字符,则 FOR JSON 子句在 JSON 输出中使用 \ 对它们进行转义,如 下表。这种转义同时出现在属性名称中 以及他们的价值观。 ...

如果您确定您生成了有效的JSON,你可以尝试使用JSON_QUERY 与 FOR JSON https://learn.microsoft.com/en-us/sql/t-sql/functions/json-query-transact-sql?view=sql-server-2017#using-json_query-with-for-json.

... JSON_QUERY 返回有效的 JSON 片段。结果,FOR JSON 不转义 JSON_QUERY 返回值中的特殊字符。 ...

简单的例子,说明了你的问题:

-- Statement:
SELECT (
   SELECT '{"value": 1}' AS TRAFFIC_DEP_LICENSE_NUMBER
   FOR JSON PATH, INCLUDE_NULL_VALUES
) AS specifics

-- Output:
-------------------------------------------------
specifics
-------------------------------------------------
[{"TRAFFIC_DEP_LICENSE_NUMBER":"{\"value\": 1}"}]

解决方案:

-- Statement:
SELECT (
   SELECT JSON_QUERY('{"value": 1}') AS TRAFFIC_DEP_LICENSE_NUMBER
   FOR JSON PATH, INCLUDE_NULL_VALUES
) AS specifics

-- Output:
-------------------------------------------------
specifics
-------------------------------------------------
[{"TRAFFIC_DEP_LICENSE_NUMBER":{"value": 1}}]

Notes:

您可以使用以下命令检查您的 JSONISJSON https://learn.microsoft.com/en-us/sql/t-sql/functions/isjson-transact-sql?view=sql-server-2017:

SELECT (
   SELECT CASE
      WHEN ISJSON('{"value": 1}') = 1 THEN JSON_QUERY('{"value": 1}') 
      ELSE 'Invalid JSON'
   END AS TRAFFIC_DEP_LICENSE_NUMBER
   FOR JSON PATH, INCLUDE_NULL_VALUES
) AS specifics
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 JSON SQL 查询中删除反斜杠 的相关文章

随机推荐

  • 在 log(n) 时间内查找排序数组中至少出现 k 次的元素

    给定一个由 n 个元素和一个数字 k 组成的排序数组 是否有可能在 log n 时间内找到出现超过 k 次的元素 如果有多个数字出现超过 k 次 则其中任何一个都可以接受 如果是 怎么办 编辑 我能够在线性时间内解决这个问题 并且我很高兴在
  • 如何从命令行列出已安装的 MSI? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们最近将 Windows 软件包从 RPM cygwin 切换到 MSI wix 拥有原生包装是一个非常受欢迎的变化 我们打算坚持下去 然而 MSI
  • 使用 JQuery 将事件处理程序添加到 iframe

    我想将 keydown 事件处理程序分配给 iframe 类似于纯JS的东西 document getElementById iframe id contentWindow addEventListener keydown funcName
  • 生成加权随机数

    我正在尝试设计一种 好的 方法从一系列可能的数字中选择一个随机数 其中该范围内的每个数字都被赋予一个权重 简单地说 给定数字范围 0 1 2 选择一个数字 其中 0 有 80 的概率被选中 1 有 10 的概率 2 有 10 的概率 自从我
  • Angular - Google 未定义?

    你好 我正在尝试实施google maps api in angular 这很简单angularjs但我不知道什么不起作用 我有一个简单的应用程序 它显示产品及其位置 单击位置后 该位置会显示在地图上 但我正在使用的购物地图google m
  • R 中曲线下增量面积 (iAUC)

    曲线下面积可以使用以下公式计算trapz的功能pracmaR iAUC 中的包在许多情况下更加准确 特别是在生物学中 然而据我所知 没有 R 函数可以计算这个 陷阱函数如下 Example a lt c 1 4 5 6 b lt c 2 4
  • 如何使用 apache 设置 mpeg dash 服务器?

    我想在 ubuntu 10 04 上设置本地 mpeg dash 服务器 那么分别安装apache和mpeg dash编码器后该怎么办呢 thanks 只需将 MPD 和破折号段放入 apache htdocs 文件夹即可 如果您的 MPD
  • Python 中使用 lxml 进行 Schematron 验证:如何检索验证错误?

    我正在尝试使用 lxml 进行一些 Schematron 验证 对于我正在处理的特定应用程序 重要的是报告任何未通过验证的测试 这lxml文档 http lxml de validation html提到了存在validation repo
  • ADB Shell 输入事件

    之间的基本区别是什么adb shell input keyevent and adb shell sendevent 我应该使用哪一个来输入字符 我们传递给这两个命令的键码是否相同 By adb shell input keyevent 或
  • 如何防止无名结构\联合?

    我正在构建一个具有矩阵数据联合的类 但是 只有当我没有结构 联合的名称时 我才能对其进行编译 但是 如果警告级别更高 视觉工作室为四级 我会发出警告说 warning C4201 nonstandard extension used nam
  • 帮助我验证 url 是否应该接受 .me 域

    var tomatch http A Za z0 9 3 A Za z 3 if tomatch test theurl window alert URL OK return true 我尝试了这个正则表达式代码来验证 url 当我尝试验证
  • 这段代码是否受 C 标准保证?

    我读过 如果你声明两个这样的结构 struct Node int a b c struct DerivedNode struct Node base int d e f 然后你可以像这样使用指向它们的指针 struct DerivedNod
  • tf.sign 如何与反向传播一起工作?

    我从 TensorFlow 开始 尝试创建一个二进制网络 更具体地说 我正在寻找一个哈希网络 它将图像编码为大小为 n 的二进制向量 所以我有一个经典的网络 我对softmax之前的最后一层进行二值化 TensorFlow 提供了一个tf
  • WCF/Silverlight:为什么使用 ChannelFactory 而不是客户端?

    在继承的项目中 使用 ChannelFactory 而不是 Client 进行 WCF 调用 为什么要这么做 另外 缓存 ChannelFactory CreateChannel 调用的结果是否安全 还是应该每次创建一个新的结果 创建 WC
  • 在python中查找日期范围重叠

    我试图找到一种更有效的方法来根据特定列 id 在数据框中查找重叠的数据范围 每行提供的开始 结束日期 数据框按 来自 列排序 我认为有一种方法可以避免双重apply像我一样运行 import pandas as pd from dateti
  • docker-compose 日志记录不适用于 syslog 选项

    我有以下 docker compose 配置 version 3 services worker image image logging driver syslog options syslog address udp XXX papert
  • 如何创建文件名中包含空字节的文件?

    对于安全测试 我需要传递一个内容和文件名中包含空字符的文件 对于body内容来说 很容易使用printf printf Hello 00 Null gt containsnull txt xxd contains null 0000000
  • 为什么这里不省略复制构造函数?

    我正在使用 gcc 与 O2 这似乎是一个消除复制构造函数的直接机会 因为访问 a 中字段的值没有副作用 bar的副本foo 但复制构造函数is调用 因为我得到了输出meep meep include
  • 有人可以提供带有显式起源列表的 CorsPolicy 实现吗?

    参考SignalR 集线器 API 指南 http www asp net signalr overview guide to the api hubs api guide javascript client crossdomain 配置注
  • 从 JSON SQL 查询中删除反斜杠

    我正在使用 SQL Server 查询构造 JSON 对象 我对斜杠有疑问 而且我需要特定格式的数据 如下所述 实际输出中有斜线 我想从输出查询中消除斜杠 SELECT SELECT value cast ISNULL SP ACCOUNT