我在表中有一列以格式存储:
{"field1":"val1","field2":"val4"}
{"field1":"val2","field2":"val5"}
{"field1":"val3","field2":"val6"}
Run Code Online (Sandbox Code Playgroud)
我需要删除所有field1的值(例如"field1":"val1","field1":"val2","field1":"val3"),结果应该是
{"field2":"val4"}
{"field2":"val5"}
{"field2":"val6"}
Run Code Online (Sandbox Code Playgroud)
我试图通过替换实现这个,但卡在'"field1"中:"val1"'字符串val1可以是任何值,如null,某个整数.
UPDATE emp SET col = REPLACE(col, '"field1":"val1"', '')
Run Code Online (Sandbox Code Playgroud)
由于val1的动态值,我陷入困境.
我正在讨论一些新的JSON功能,并想知道是否有一种聪明(或明显)的方式将行集作为JSON对象返回.理想情况下,无需命名键或使用任何类型的字符串操作.
例:
TABLE: people
id name age
1 bob 54
2 jay 32
3 john 10
SELECT * FROM people where id = 1
Run Code Online (Sandbox Code Playgroud)
会回来的
{"id":1,"name":"bob","age":54}
Run Code Online (Sandbox Code Playgroud)
甚至更好
SELECT * FROM people
Run Code Online (Sandbox Code Playgroud)
将返回所有3个对象的数组
如果您不熟悉新的JSON功能,那么其中一个新功能就是 JSON_OBJECT
SELECT JSON_OBJECT('key1', 1, 'key2', 'abc')
Run Code Online (Sandbox Code Playgroud)
将返回一个键值JSON对象.
我将以下数据存储在 MySQL 表的一列中,该表的数据类型为“json”(MySQL v5.7.9)
[{"id": "26", "title": "similar1", "score": "0.97"}, {"id": "27", "title": "similar2", "score": "0.87"}, {"id": "28", "title": "similar2", "score": "0.87"}]
Run Code Online (Sandbox Code Playgroud)
我需要一个 MySQL 查询,它将返回所有“标题”值,即相似1、相似2和相似3等等
我有一个带有JSON列的MySQL表sent。列中的条目具有如下信息:
{
"data": {
"12":"1920293"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用mysql查询:
select sent->"$.data.12" from mytable
Run Code Online (Sandbox Code Playgroud)
但我有一个例外:
Invalid JSON path expression. The error is around character position 9.
Run Code Online (Sandbox Code Playgroud)
知道如何提取信息吗?该查询适用于非数字子字段。
我在列中有以下电话号码:
["+63(02)3647766", "+63(02)5467329", "+63(02)8555522", "+63(02)3642403"]
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这样的信息:
+63(02)3647766,+63(02)5467329,+63(02)8555522,+63(02)3642403
Run Code Online (Sandbox Code Playgroud) 我有一个带有 JSON_ARRAY 列的简单表,如下所示:
+----+---------+
| id | content |
+----+---------+
| 1 | [3, 4] |
| 2 | [5, 6] |
+----+---------+
Run Code Online (Sandbox Code Playgroud)
我想列出特定 ID 的所有内容引用
SELECT JSON_EXTRACT(content, '$') as res FROM table WHERE id=1
但我希望结果成行:
+-----+
| res |
+-----+
| 3 |
| 4 |
+-----+
Run Code Online (Sandbox Code Playgroud) 是否可以告诉 Rails 使用 JSON 列作为关系的“后端”?我有一个Article模型,它将评论 id 存储在 JSON 列中Article#comment_ids:
class Article < ApplicationRecord
def comments
Comment.where(id: comment_ids)
end
end
class Comment < ApplicationRecord
end
Article.first.comment_ids
=> [1,2]
Article.first.comments
=> [#<Comment:0x00007f4d7cff7c08 id: 1>,#<Comment:0x00007f4d7cff7c08 id: 2>]
Run Code Online (Sandbox Code Playgroud)
有没有办法替换这段代码
def comments
Comment.where(id: comment_ids)
end
Run Code Online (Sandbox Code Playgroud)
与一个
has_many :comments # somehow reference #comment_ids
Run Code Online (Sandbox Code Playgroud)
背景:我的应用程序的其他部分使用急切加载之类的东西article.association(:comments).loaded?。而且因为它不是 Rails 关系,所以这不适用于 Comments 关系。
我有一个带有 json 列的表,如下所示:
+----+------------+
| id | myfield |
+----+------------+
| 1 | ["1", "2"] |
| 2 | ["3", "2"] |
| 3 | ["2", "4"] |
+----+------------+
Run Code Online (Sandbox Code Playgroud)
如何将myfield中的所有值合并到一个数组中?
我需要一个如下所示的结果:["1", "2", "3", "2", "2", "4"],或者删除重复项后效果更好。
我尝试使用这个查询:
SELECT JSON_ARRAYAGG(myfield) FROM json_test但结果我得到:
[["1", "2"], ["3", "2"], ["2", "4"]]
我假设我需要与函数 JSON_MERGE 结合使用的查询。
PostgreSQL 允许按数组对行进行排序。它比较每个数组的第一个值,然后比较第二个值,依此类推(fiddle):
select array[2, 4] as "array"
union
select array[10] as "array"
union
select array[2, 3, 4] as "array"
union
select array[10, 11] as "array"
order by "array"
Run Code Online (Sandbox Code Playgroud)
| 大批 |
|---|
| [2,3,4] |
| [2, 4] |
| [10] |
| [10, 11] |
MySQL 和 MariaDB 上最接近的等效项似乎是JSON 数组。
MySQL 显然或多或少随机地按长度对数组进行排序( fiddle):
select json_array(2, 4) as `array`
union
select json_array(10) as `array`
union
select json_array(2, 3, 4) as `array`
union
select json_array(10, 11) as `array`
order by `array`
Run Code Online (Sandbox Code Playgroud)
| 大批 |
|---|
| [10] |
| [2, 4] … |
我正在尝试更新 MariaDB 中 json 列中存储的数据(libmysql 版本 - 5.6.43 ,服务器:10.3.34-MariaDB-cll-lve - MariaDB 服务器)。
\n我的数据结构如下:
\n| ID | json_数据 |
|---|---|
| 1 | {....} |
| 2 | {....} |
其中json_data的结构如下:
\n{\n "company": {\n "id": "",\n "name": "",\n "address": ""\n },\n "info_company": {\n "diff_v": "1",\n "grav_v": "",\n "diff_s": "2",\n "grav_s": "",\n "diff_g": "3",\n "grav_g": "",\n "diff_ri": "4",\n "grav_ri": "2"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我正在尝试更新info_company内的数据,替换:
\n所以结果应该是:
\n{\n "company": {\n "id": "",\n "name": …Run Code Online (Sandbox Code Playgroud) mysql-json ×10
mysql ×9
json ×5
arrays ×2
mariadb ×2
sql ×2
mariadb-10.3 ×1
merge ×1
sql-order-by ×1