首页 > 解决方案 > SQL 以 JSON 格式复制和保存

问题描述

我在 mysql 服务器 5.7.27 上并尝试将数据从一个表复制到另一个具有格式化 json 值的表。

假设有两个表:-

files(id, applicant_id, passport, license);
attachments(id, applicant_id, passport, license);

表中的护照和许可证列files具有带有其文字值的字符串数据类型,而在附件中,数据类型被定义为 json 并且需要与其他数据(例如文件名)一起保存。

我想将数据从files一个表复制到attachments另一个表,并为 json 数据提供一些额外的格式。

INSERT INTO attachments (applicant_id, license) FROM files (applicant_id, '{"\name\": \"Driving License\", "\file\": license}');

但这给了我一个错误:- 3140 Invalid JSON text: "Invalid value."

解析 的值的正确语法是license什么?

标签: mysqlsql

解决方案


看来您正在寻找INSERT INTO ... SELECT

INSERT INTO attachments (applicant_id, license)
SELECT
    applicant_id,
    CONCAT('{"\name\": \"Driving License\", "\file\": \"', license, '\"}')
FROM files;

在这里,我使用表CONCAT中的许可证值来构建您想要的 JSON 文字值files


推荐阅读