SQL 将 JSON 插入 table 列

SQL Insert JSON into table column

在寻找将数组插入单个数据库列的方法时,我找到了一篇关于插入 JSON 字符串的文章。但是没有解释如何。我试图搜索并找到方法,但没有成功。

我有以下table:

+---------+----------------+----+
|  Name   |      Type      |    |
+---------+----------------+----+
| id      | int            | AI |
| name    | String         |    |
| address | JSON(longtext) |    |
+---------+----------------+----+

我想做的是在 address 列中插入一个 Json 数组。喜欢:

+----+-----------+------------------------------------------+
| id |   name    |                 address                  |
+----+-----------+------------------------------------------+
|  1 | User name | [{street: "street address", city: "Berlin"}] |
+----+-----------+------------------------------------------+

我考虑过将 JSON 作为字符串插入,但我不确定这是否是个好主意。有什么建议吗?

您可以将数据作为字符串传递,只要它有效JSON; MySQL 很乐意在后台为您转换它。

insert into mytable (id, name, address)
values (
    1,
    'User name',
    '[{"street": "street address", "city": "Berlin"}]'
);

另一种方法是使用 JSON 构建器函数:

insert into mytable (id, name, address)
values (
    1,
    'User name',
    json_array(json_object('street', 'street address', 'city', 'Berlin'))
);
CREATE TABLE people (id INT, name VARCHAR(255), address JSON);

INSERT INTO people (id, name, address)
VALUES (1, 'User name', '[{"street": "street address", "city": "Berlin"}]');

SELECT *
FROM people;
id name address
1 User name [{"city": "Berlin", "street": "street address"}]

db<>fiddle here

如果 MySQL

中已有数据类型 JSON,为什么要转换为字符串
INSERT INTO <Table_Name> VALUES ('{street: "street address", city: "Berlin"}');

此插入语句将直接插入您的数组。无需转换。

看到这个