如何修正SQL查询提取SFMC数据扩展字段中的目标子字符串?
SFMC数据扩展字段提取JSON子字符串修正方案
你的查询结果包含多余的引号和大括号,原因是未精准定位到目标内容的结束双引号位置,仅通过固定长度截取会包含后续字符。以下是两种修正方案:
方案一:精准定位结束双引号(推荐)
通过嵌套CHARINDEX找到目标值的起始和结束位置,精准截取内容:
SELECT SUBSTRING( a.MessageData, CHARINDEX(':"', a.MessageData) + 2, -- 跳过`:"`,定位到目标内容起始位 CHARINDEX('"', a.MessageData, CHARINDEX(':"', a.MessageData) + 2) - CHARINDEX(':"', a.MessageData) - 2 -- 计算目标内容的长度 ) AS MessageData FROM FabriCare_WA_Inbound_Message_DetailsDE a
方案二:替换多余字符(适用于固定格式场景)
如果字段格式固定为{"Body":"xxx"},可先截取到倒数第二位,再替换掉剩余的引号:
SELECT REPLACE( SUBSTRING(a.MessageData, CHARINDEX(':"', a.MessageData) + 2, LEN(a.MessageData) - CHARINDEX(':"', a.MessageData) - 3), '"', '' ) AS MessageData FROM FabriCare_WA_Inbound_Message_DetailsDE a
方案一通用性更强,即使目标内容长度变化也能准确提取;方案二更简洁,适合格式完全固定的场景。
内容的提问来源于stack exchange,提问作者ashu23
相关产品推荐
相关产品推荐

