Snowflake SQL中提取JSON字符串指定标识间内容的方法
Snowflake SQL提取指定标识间内容的实现方案
这里提供两种可行的函数实现方案,用于提取~Message:之后到下一个~之间的内容:
方案一:使用正则函数REGEXP_SUBSTR
借助正则捕获组直接定位目标内容,适合处理结构稍复杂的字符串场景:
SELECT REGEXP_SUBSTR( 'This is a test ~Message: This is a test~', '~Message: (.*?)~', 1, 1, 'e' ) AS extracted_content;
参数说明:
'~Message: (.*?)~':正则表达式,其中(.*?)是非贪婪匹配模式,精准捕获两个标识之间的内容- 第3、4个参数
1,1表示从字符串起始位置开始匹配第1次出现的目标模式 'e'参数指定返回正则表达式中捕获组(括号内的内容),而非整个匹配的字符串
方案二:使用字符串分割函数SPLIT_PART
通过两次分割操作提取内容,逻辑直观,适合结构固定的简单场景:
SELECT SPLIT_PART( SPLIT_PART('This is a test ~Message: This is a test~', '~Message: ', 2), '~', 1 ) AS extracted_content;
逻辑说明:
- 第一次
SPLIT_PART以~Message:为分隔符,将原字符串分割为两部分,取第2部分(即~Message:之后的所有内容) - 第二次
SPLIT_PART以~为分隔符,将上一步的结果分割,取第1部分即为目标内容
内容的提问来源于stack exchange,提问作者user7675421
相关产品推荐
相关产品推荐

