标签: json-query

如何搜索包含JSON数组的SQL列

我有一个SQL列,它有一个JSON数组:

{"names":["Joe","Fred","Sue"]}
Run Code Online (Sandbox Code Playgroud)

给定一个搜索字符串,我如何使用SQL在names数组中搜索匹配?我正在使用SQL 2016并查看了JSON_QUERY,但不知道如何在JSON数组上搜索匹配项.像下面这样的东西会很好.

SELECT *
FROM table
WHERE JSON_QUERY(column, '$.names') = 'Joe'
Run Code Online (Sandbox Code Playgroud)

sql t-sql arrays sql-server-2016 json-query

9
推荐指数
1
解决办法
8492
查看次数

MySQL嵌套JSON列搜索并提取子JSON

我有一个authors带有列的MySQL表id,namepublished_books.在这里,published_books是一个JSON列.有样本数据,

id | name  | published_books
-----------------------------------------------------------------------
1  | Tina  |  {
   |       |    "17e9bf8f": {
   |       |         "name": "Book 1",
   |       |         "tags": [
   |       |             "self Help",
   |       |             "Social"
   |       |         ],
   |       |         "language": "English",
   |       |         "release_date": "2017-05-01"
   |       |     },
   |       |      "8e8b2470": {
   |       |          "name": "Book 2",
   |       |          "tags": [
   |       |              "Inspirational"
   |       |          ],
   |       |          "language": "English",
   | …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-5.7 mysql-json json-query

8
推荐指数
1
解决办法
2002
查看次数

如何在 Ansible json_query 中使用变量?

我想在 json 查询过滤器中使用 ansible 变量。这是我的代码:

剧本执行:

ansible-playbook debug.yml -e "project_environment=live"
Run Code Online (Sandbox Code Playgroud)
ansible-playbook debug.yml -e "project_environment=live"
Run Code Online (Sandbox Code Playgroud)

这是我的字典:

- debug:
    msg: "{{ project_environment }}"

- debug:
    msg: "{{ check_objects | json_query('`{{project_environment}}`.current') }}"
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

TASK [debug : debug] 
ok: [sample-hostname] => {
    "msg": "live"
}

TASK [debug  : debug]
ok: [sample-hostname] => {
    "msg": ""
}
Run Code Online (Sandbox Code Playgroud)

当我使用预期值替换变量时,输出工作正常:

check_objects:
  live:
    current:
    - example.com
    next:
    - next.example.com
Run Code Online (Sandbox Code Playgroud)
TASK [typo3-deployment/check : debug] 
ok: [sample-hostname] => {
    "msg": [
        "example.com"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我认为它在插入变量时遇到了麻烦。

我已经尝试过这个解决方案,但它也不起作用:Ansible:在 json_query 过滤器中传递一个变量

ansible json-query

8
推荐指数
1
解决办法
1万
查看次数

如何修复 SQL Server Json 文本格式不正确的问题。在位置 151 发现意外字符

我正在处理一个具有 JSON 格式列的表,我想从该列中提取坐标值。

所以我运行以下代码:

Select *,JSON_VALUE(field,'$."Coordinate-X"[0]') As coordinate INTO TABLE_1 FROM table
WHERE JSON_VALUE(field,'$."Coordinate-X"[0]') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

运行5分钟后出现以下错误

消息 13609,级别 16,状态 1,第 27 行 Json 文本格式不正确。在位置 151 处发现意外字符“”。

当我尝试检查一些前 200 * 以下的行时,代码返回结果,没有任何错误

Select TOP 200 *,JSON_QUERY(field,'$."Coordinate-X"[0]') As coordinate FROM table
WHERE JSON_VALUE(field,'$."Coordinate-X"[0]') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

我想我有一行导致了错误,但我不知道如何识别它或排除该行并返回结果。

sql json-query json-value

8
推荐指数
1
解决办法
2万
查看次数

SQL Server - “for json path”语句返回的 JSON 字符串不超过 2984 行

我正在尝试使用“for json path”语句在复杂且嵌套的 JSON 字符串中生成大量数据,并且我使用多个函数来创建此 JSON 字符串的不同部分,如下所示:

declare @queue nvarchar(max)

select @queue = (
    select x.ID as layoutID
        , l.Title as layoutName
        , JSON_QUERY(queue_objects (@productID, x.ID)) as [objects]
    from Layouts x
    inner join LayoutLanguages l on l.LayoutID = x.ID
    where x.ID = @layoutid
    group by x.ID, l.Title
    for json path
)

select @queue as JSON
Run Code Online (Sandbox Code Playgroud)

到目前为止,JSON 将是:

{
    "root": [{
        "layouts": [{
            "layoutID": 5
            , "layoutName": "foo"
            , "objects": []
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

然后将调用“queue_objects”函数来填充“objects”数组:

队列对象

select 0 as objectID
    , …
Run Code Online (Sandbox Code Playgroud)

sql json sql-server-2016 json-query for-json

7
推荐指数
1
解决办法
1万
查看次数

SQL Server 2016在JSON数组中选择位置

我有一个表[JsonTable],列[JsonData]保存json字符串,

JsonData像:

{
   "Names": ["John", "Joe", "Sam"]
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能像这样内部连接该表:

SELECT* FROM [TestTable] AS T
INNER JOIN [JsonTable] AS J ON T.[Name] IN JSON_QUERY(J.[JsonData], '$.Names')
Run Code Online (Sandbox Code Playgroud)

sql-server inner-join sql-server-2016 json-query

6
推荐指数
2
解决办法
2250
查看次数

ansible json-query路径按内容选择项目

有谁知道在下面的示例JSON中可以使用什么json查询过滤器来选择Tigger的食物?JSON是大规模且相对复杂的AWS blob的简化替代.

一些背景:我很高兴发现Ansible有一个json查询过滤器.鉴于我试图从AWS JSON blob中选择一个元素,这看起来就像我需要的那样.但是我很快遇到了麻烦,因为AWS对象有标签,我需要按标签选择项目.我尝试了相当于Foods[Tags[(Key='For') & (Value='Tigger')]]和类似的选择器路径,但没有设法让它工作.使用独立的JSON-查询库如https://www.npmjs.com/package/json-query我可以使用parent属性,但是,这并不似乎是在Ansible,撇开是从核心理念的偏差JSON查询.

回避问题并使用jsonpath选择器可能会更好.jsonpath类似于json-query,是xpath的翻译.

{ "Foods" :
  [ { "Id": 456
    , "Tags":
      [ {"Key":"For", "Value":"Heffalump"}
      , {"Key":"Purpose", "Value":"Food"}
      ]
    }
  , { "Id": 678
    , "Tags":
      [ {"Key":"For", "Value":"Tigger"}
      , {"Key":"Purpose", "Value":"Food"}
      ]
    }
  , { "Id": 911
    , "Tags":
      [ {"Key":"For", "Value":"Roo"}
      , {"Key":"Purpose", "Value":"Food"}
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

参考文献:

我想用json-query来标记这个问题,但是缺乏这样做的要点.

json ansible jmespath json-query

5
推荐指数
1
解决办法
2万
查看次数

C#Dapper使用JSON_VALUE进行SQL Server 2016

我想使用JSON_VALUE以下方法查询表中的数据:

var str = "123";
var value = "Name"
using(var conn = GetMyConnection())
{
   var result = conn.QueryFirstOrDefault<string>(
      @"SELECT [Id] FROM [dbo].[MyTable]
         WHERE JSON_VALUE([JsonColumn], @MyQuery) = @Str",
      new
      {
         MyQuery = $"$.{value}",
         Str = str
      }
   );
}
Run Code Online (Sandbox Code Playgroud)

我在SQL Server中尝试这个,它正在工作:

SELECT [Id] FROM [dbo].[MyTable]
WHERE JSON_VALUE([JsonColumn], '$.Name') = '123'
Run Code Online (Sandbox Code Playgroud)

我应该如何调整我的代码?

c# t-sql dapper sql-server-2016 json-query

5
推荐指数
1
解决办法
1905
查看次数

SQL Server 2016中JSON数据的where子句

我的表中有一个nvarchar(1000)字段,并且正在该列中存储JSON数据。

例如:

 CONTENT_RULE_ID    CONTENT_RULE
 1                  {"EntityType":"Inquiry", "Values":[1,2]}
 2                  {"EntityType":"Inquiry", "Values":[1,3]}
 3                  {"EntityType":"Inquiry", "Values":[2,4]}
 4                  {"EntityType":"Inquiry", "Values":[5,6,1]}
 6                  {"EntityType":"Inquiry", "Values":[8,1]}
 8                  {"EntityType":"Inquiry", "Values":[10,12,11]}
Run Code Online (Sandbox Code Playgroud)

由此我如何在sql server中使用JSON_QUERY获取所有查询ID为1的CONTENT_RULE_ID

sql-server json sql-server-2016 sql-server-json json-query

5
推荐指数
1
解决办法
1805
查看次数

JS对象查询语法

我正在尝试使用类似于SQL的查询语法找到一种过滤器js集合的方法.

我发现完成此任务的唯一库是json-query.

它在某些情况下有效,但它有局限性.对于多个结果,不可能使用相同的查询或查询在不同的对象级别上进行查询.

以下是一些示例(以下面的数据结构作为参考)

 [{
           "type": "UU",
            "value": "100",
            "tipo": "G",
            "strumento": "P",
            "aspetto": "C",
            "unit": "ml"
        },
        {
            "type": "PS",
            "value": "120/88",
            "rilevamento": "Manuale",
            "lato": "SX",
            "part": "Supina",
            "unit": "mmHg"
        },
        {
            "type": "TP",
            "value": "33.6",
            "tipo": "T",
            "unit": "°C"
        },
        {
            "type": "VO",
            "value": "12",
            "tipo": "VOAL",
            "unit": "ml"
        },
        {
            "type": "RS",
            "value": "60",
            "unit": "atti/min"
        },
        {
            "type": "HH",
            "value": "180",
            "modalita": "R",
            "unit": "cm"
        },
        {
            "type": "AA",
            "value": "50",
            "unit": "cm"
        }, …
Run Code Online (Sandbox Code Playgroud)

javascript jquery json json-query

5
推荐指数
1
解决办法
303
查看次数