如何提取非JSON格式字符串列中ID分段下的对应值?
非JSON结构化字符串ID分段提取方案
你之前使用的JSON点操作符语法仅支持JSON格式字段,非JSON格式的结构化字符串需要通过字符串处理函数或正则表达式提取对应分段内容,以下是不同主流数据库的实现方案,默认假设存储分段内容的列名为content,分段规则为key=value,不同分段用;分隔,你可以根据实际业务的分段规则调整匹配字符:
MySQL 实现
SELECT -- 先截取ID=之后的内容,再截取到下一个分号为止的部分 SUBSTRING_INDEX( SUBSTRING_INDEX(content, 'ID=', -1), ';', 1 ) AS extracted_id FROM TBL_A;
PostgreSQL 实现
字符串拆分法
SELECT split_part(split_part(content, 'ID=', 2), ';', 1) AS extracted_id FROM TBL_A;
正则匹配法(通用性更强)
SELECT substring(content FROM 'ID=([^;]+)') AS extracted_id FROM TBL_A;
Oracle 实现
SELECT REGEXP_SUBSTR(content, 'ID=([^;]+)', 1, 1, NULL, 1) AS extracted_id FROM TBL_A;
SQL Server 实现
SELECT SUBSTRING( content, CHARINDEX('ID=', content) + 3, -- 跳过ID=三个字符的长度 CHARINDEX(';', content, CHARINDEX('ID=', content)) - (CHARINDEX('ID=', content) + 3) ) AS extracted_id FROM TBL_A;
内容的提问来源于stack exchange,提问作者lalaland
相关产品推荐
相关产品推荐

