Snowflake SQL:如何从字符串中提取双引号包裹的内容段
Snowflake SQL 提取双引号包裹的完整片段
要提取从第一个双引号到最后一个双引号的内容,可以结合Snowflake的POSITION、REVERSE、LENGTH和SUBSTRING函数实现,具体方案如下:
核心逻辑
- 定位第一个双引号:用
POSITION函数找到字符串中第一个双引号的起始索引(从1开始计数)。 - 定位最后一个双引号:通过反转字符串,找到反转后第一个双引号的位置,再结合原字符串长度计算出原字符串中最后一个双引号的索引。
- 截取目标片段:用
SUBSTRING从第一个双引号的位置开始,截取到最后一个双引号结束的完整部分。
示例代码
假设你的数据列名为str_col,表名为your_table,可以执行以下SQL查询:
SELECT str_col, SUBSTRING( str_col, POSITION('"' IN str_col), (LENGTH(str_col) - POSITION('"' IN REVERSE(str_col)) + 1) - POSITION('"' IN str_col) + 1 ) AS extracted_quoted_content FROM your_table;
函数细节说明
POSITION('"' IN str_col):返回第一个双引号在原字符串中的位置。REVERSE(str_col):反转整个字符串,让原字符串的最后一个双引号成为反转后的第一个。LENGTH(str_col) - POSITION('"' IN REVERSE(str_col)) + 1:通过反转后的位置反推原字符串中最后一个双引号的索引。SUBSTRING的长度参数:用最后一个双引号的索引减去第一个的索引再加1,确保截取的内容包含首尾两个双引号。
边界情况处理
如果字符串中没有双引号,上述查询会返回NULL。若需要自定义这种场景的返回值,可以用IFNULL或CASE调整:
SELECT str_col, IFNULL( SUBSTRING( str_col, POSITION('"' IN str_col), (LENGTH(str_col) - POSITION('"' IN REVERSE(str_col)) + 1) - POSITION('"' IN str_col) + 1 ), '' -- 可替换为 str_col 返回原字符串 ) AS extracted_quoted_content FROM your_table;
内容的提问来源于stack exchange,提问作者Priya d
相关产品推荐
相关产品推荐

