问题标签 [mysql-json]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL JSON 按 id 提取单个值
我有一个数据库,列中有一个 JSON 数组extra_fields
。我需要通过 id 提取一个值。
JSON 看起来像这样,尽管每行的对象数量是随机的:
我可以提取一个 id 数组:
我可以使用以下方法提取一组值:
我可以在第 n 个零序对象位置提取单个值:
但问题是对象数量可变,我特别需要对象 id = 11 的值。 JSON_EXTRACT 似乎不支持过滤,因为 JSONPATH 的每个变体似乎都失败了。$..[?(@.id=11)].value
作为 JSONPATH 工作,但这(和许多变体)失败:
SELECT extra_fields->"$.[?(@.id=11)].value" FROM esqt7_k2_items; #FAILS
这是一个迁移项目,JSON 内容正是 Joomla 选择实现其额外字段的方式。如果你问我,有点痛苦。
mysql - 按存储对象数组的 JSON 列过滤行
我有下表,它被称为products
我省略了我不需要的列:
我有两个 JSON 列,我想在同一个查询中使用它们来过滤产品及其变体。两列具有相同的结构,类似于存储产品可能具有的自定义字段:
要过滤的查询的重要属性是字段的名称和name
与value
该特定产品关联的值,在上面的示例中,我们有一个可以在外部使用的手工产品。
如果用户想要过滤产品,他可能会发送参数,{"External use": "false", "Handmade":"true"}
但现在我只能过滤一个属性,目前value
如果我通过true
它将带来所有value
在任何字段中设置为 true 的产品。
我想知道是否可以为AND
这些对象数组中的同一个 JSON 对象应用条件或类似的东西,所以我传递的参数与我需要的字段有关。
php - PDO-MySQL:布尔值在准备好的语句绑定上转换为 1 或空字符串
我正在尝试将一些布尔值插入 JSON 类型的列。
这会导致执行以下 SQL。
有没有办法让 PDO 将它们转换为 SQL 语句TRUE
或FALSE
在 SQL 语句中,然后将它们转换为正确的 JSON 布尔值。
编辑:
我现在尝试使用bindParam
andbindValue
而不是execute
. 这些并不能解决问题,因为 PDO 仍将布尔值转换为0
or 1
。
编辑:看起来有一个11 岁的错误报告,仍然没有得到解决。
mysql - 无法使用 JSON_CONTAINS 进行搜索
我正在使用以下查询来搜索名为“JavaScript”的 json 值
当我运行查询时,我得到 0 个结果
这是我正在使用的插入命令
这是我正在使用的搜索查询:
任何帮助将非常感激!
mysql - mysql JSON_SET 或 JSON_INSERT 函数将对象插入嵌套对象(如果存在)
我有一个 json 类型的列config
,我想在其中添加一个键值对,最终看起来像:
我遇到的问题是,当我想在功能中插入实用程序对象时,我要么覆盖divisions
键值,要么返回NULL
并且utilities
没有插入对象。
此外,该config
列可能是NULL
或最初只是一个空的{}
。
此查询将检查 NULL 或空 {} 以及键是否存在,但如果它已经存在则features
导致覆盖:features
除非该列已经包含以下内容,否则这可以正常工作:
它divisions
用utilities
对象覆盖。
所以我正在尝试 JSON_INSERT 查询;从我从 mysql json 函数文档中收集到的内容应该可以工作,但它返回 null,我不明白为什么:
mysql - mysql 我们可以在不更改最大数据包大小的情况下更改最大默认 JSON 列长度吗?
我在这里读到最大允许 json 为 1 GB。
我们能否以某种方式更改此默认行为以将此 MAX 限制减少到几 MB 或具有 json 数据类型的特定表列中的任何其他值?
json - 将带有 OPENJSON (SQL 2016) 的 JSON 文件内容插入表中,其中一列不属于 JSON 文件
只要 Json 的内容与表匹配,使用 OPENJSON 在 SQL 表中执行插入和存储 JSON 似乎非常简单。
当我要插入到表中的值之一不是 JSON 字符串的一部分时,问题就开始了。
IE 在下面的场景中,我试图将日期作为硬编码变量@createdON 传递,但我看到以下错误:
[代码:207,SQL 状态:42S22] 列名“20171128”无效。
基本上,我正在尝试使用 JSON 中未包含的日期值来丰富我的 JSON 文件的导入。
顺便说一句更换;
声明 @createdON VARCHAR(MAX) 并设置 createdON = "20171128"
和
声明 @createdON DATETIME 并选择 createdON = GETDATE()
使这是一个正确的查询。很高兴知道为什么?
mysql - MySQL 嵌套 JSON 列搜索和提取子 JSON
我有一个authors
带有列的 MySQL 表id
,name
并且published_books
. 在此,published_books
是一个 JSON 列。有了样本数据,
如您所见,该published_books
列具有嵌套的 JSON 数据(一层)。JSON 将具有动态 UUID 作为键,其值将作为 JSON 的书籍详细信息。
我想在books
某些条件下搜索并单独提取那些书籍 JSON 数据以作为结果返回。
我写的查询,
此查询执行搜索并返回整个published_books
JSON。但我只想要那些 JSON 书。
预期的结果,
mysql - 如何在 MySQL 中的 JSON 数组内的元素中提取特定属性的所有值?
我将以下数据存储在 MySQL 表的列中,该表是“json”数据类型(MySQL v5.7.9)
我需要一个 MySQL 查询,它将返回所有“标题”值,即相似 1、相似 2 和相似 3 等等