如何在MySQL中使用SUBSTR等函数提取字符串中OrderKey对应字段内容
MySQL提取指定OrderKey字段内容的实现方案
可以实现,以下是两种包含SUBSTR函数的实现方案,均能得到你需要的目标结果:
原始待处理字符串:
Result":{"CreateDate":"2021-05-27T19:58:33","OrderKey":"6ea1eb40-bd80-4e8b-8e78-a7 ","OrderReference":"app_iheillyy_9816617_AF_e2002"}}
目标提取结果:
OrderKey":"6ea1eb40-bd80-4e8b-8e78-a7 "
方案1:SUBSTR + LOCATE 组合
通过LOCATE定位关键字符串的起止位置,再用SUBSTR按位置截取内容,示例SQL如下:
SELECT SUBSTR( 你的字段名, -- 截取起始点:OrderKey第一个字符的位置 LOCATE('OrderKey', 你的字段名), -- 截取长度:结束引号位置 - 起始位置 + 结束引号的长度("共6个字符) LOCATE('"', 你的字段名, LOCATE('OrderKey":"', 你的字段名) + LENGTH('OrderKey":"')) - LOCATE('OrderKey', 你的字段名) + 6 ) AS extracted_orderkey FROM 你的表名;
方案2:SUBSTR + SUBSTRING_INDEX 组合
通过SUBSTRING_INDEX按分隔符拆分内容,搭配SUBSTR和拼接函数得到结果,示例SQL如下:
SELECT CONCAT( 'OrderKey":"', -- 拆分出OrderKey的实际值 SUBSTRING_INDEX( -- 先截取OrderKey值开始之后的所有内容 SUBSTR(你的字段名, LOCATE('OrderKey":"', 你的字段名) + LENGTH('OrderKey":"')), '"', 1 ), '"' ) AS extracted_orderkey FROM 你的表名;
以上两种方案均兼容MySQL 5.5及以上版本,如果你的数据库版本支持JSON函数,也可以先把字符串中的"替换为普通双引号转成合法JSON格式后,搭配JSON_EXTRACT提取内容。
内容的提问来源于stack exchange,提问作者Marco Antonio
相关产品推荐
相关产品推荐

