首页 > 解决方案 > 如何将两列值 CONCAT 转换为 JSON 格式?

问题描述

我想以格式将CONCAT两列值转换为一个字符串。但是我对查询中的引号和双引号有疑问。如何修复我的查询,使其成功产生预期的结果?stringJSON

$concat = "CONCAT('{"CODE":"pm_r.CODE","NAME":"pm_r.NAME"}') AS `JSON`"
$query  = $this->db->query(
    'SELECT pm_r.ID_REQUIREMENT, '.$concat.'FROM `pm_requirement` `pm_r`'
);

预期的结果应该是:

ID_REQUIREMENT   JSON
ID001            {"CODE":"001","NAME":"Shane"}

标签: mysqlconcatenation

解决方案


为避免引用冲突,一种解决方案是使用php HEREDOCstring

我还修复了你CONCAT,要连接的列的名称应该与字符串的固定部分分开。

$query  = $this->db->query(<<<EOT
    SELECT 
        pm_r.ID_REQUIREMENT,
        CONCAT('{"CODE":"', pm_r.CODE, '","NAME":"', pm_r.NAME, '"}') AS `JSON`
        FROM `pm_requirement` `pm_r`
EOT
);

推荐阅读