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

假设有两个表格:

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


files表中的“ passport and license”列的字符串数据类型带有其文字值,而在附件中,该数据类型定义为json,需要与其他数据(例如文件名)一起保存。

我想将数据从files表复制到attachments表,并为json数据添加一些其他格式。

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


但这给了我一个错误:
3140无效的JSON文本:“无效值”。

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

最佳答案

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

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


在这里,我使用CONCATfiles表中的许可证值构建所需的JSON文字值。

关于mysql - 复制并保存为JSON格式的SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57635891/

10-15 23:46