存储过程导出JSON时如何移除\t\n转义字符并适配其他系统?
移除转义字符并生成符合要求的JSON存储过程实现
根据你的需求,核心是先清洗邮件正文中的\t、\r\n转义字符,再生成指定结构的JSON。下面分常用数据库给出具体实现:
SQL Server 版本
CREATE PROCEDURE GenerateCleanEmailJSON AS BEGIN SET NOCOUNT ON; -- 先清洗数据,移除换行和制表符(可替换为空或空格,根据需求调整) SELECT id, -- 替换\r\n和\t为空格,若要完全移除则换成'' REPLACE(REPLACE(body, CHAR(13) + CHAR(10), ' '), CHAR(9), ' ') AS body INTO #TempCleanedEmails FROM YourEmailTable; -- 替换为你的实际表名 -- 生成指定结构的JSON SELECT id, body FROM #TempCleanedEmails FOR JSON PATH, ROOT('emailTexts'); DROP TABLE #TempCleanedEmails; END
执行存储过程后,会直接输出符合要求的JSON:
{ "emailTexts": [ { "id": 1, "body": "Dear Sir Greetings! ThankYou" } ] }
MySQL 版本
DELIMITER // CREATE PROCEDURE GenerateCleanEmailJSON() BEGIN -- 直接清洗数据并构造JSON结构 SELECT JSON_OBJECT( 'emailTexts', JSON_ARRAYAGG( JSON_OBJECT( 'id', id, 'body', REPLACE(REPLACE(body, '\r\n', ' '), '\t', ' ') ) ) ) AS clean_email_json; END // DELIMITER ;
调用存储过程后,返回的结果即为目标格式JSON,其中换行和制表符已被替换(或移除)。
注意事项
- 若不需要保留空格,直接把REPLACE函数中的
' '替换为''即可完全移除转义字符对应的内容 - 务必将代码中的
YourEmailTable替换为你的实际邮件表名称 - 可以先单独执行SELECT清洗语句,验证邮件正文的清洗效果后再整合到存储过程中
内容的提问来源于stack exchange,提问作者dmall
相关产品推荐
相关产品推荐

