润乾报表 JSON 数据取数乱码问题解决方案
问题描述
在 MySQL 数据库中,使用 JSON_UNQUOTE 函数提取 JSON 字段中的字符串值时,数据库中执行 SQL 查询显示正常,但在润乾报表的数据集预览或展示时出现乱码。
问题 SQL 示例:
SELECT
JSON_UNQUOTE(JSON_EXTRACT(pa.customer_id, ‘$[0].quotationCompanyName’)) AS customer_id,
JSON_UNQUOTE(JSON_EXTRACT(pa.customer_id_sale, ‘$[0].quotationCompanyName’)) AS customer_id_sale FROM table_name
原因分析
JSON_UNQUOTE 函数从 JSON 字段提取并去除引号后,返回的数据类型是二进制类型(BLOB),而非普通的字符串类型。润乾报表在接收该二进制数据时,未正确处理编码转换,导致显示为乱码。
解决方案
使用 CAST 函数将 JSON_UNQUOTE 的结果强制转换为字符串类型即可。
修改后的 SQL
SELECT
CAST(JSON_UNQUOTE(JSON_EXTRACT(pa.customer_id, ‘$[0].quotationCompanyName’))AS CHAR) AS customer_id,
CAST(JSON_UNQUOTE(JSON_EXTRACT(pa.customer_id_sale, ‘$[0].quotationCompanyName’))AS CHAR) AS customer_id_sale
FROM table_name
