You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake SQL:如何从字符串中提取双引号包裹的内容段

Snowflake SQL 提取双引号包裹的完整片段

要提取从第一个双引号到最后一个双引号的内容,可以结合Snowflake的POSITION、REVERSE、LENGTH和SUBSTRING函数实现,具体方案如下:

核心逻辑

  1. 定位第一个双引号:用POSITION函数找到字符串中第一个双引号的起始索引(从1开始计数)。
  2. 定位最后一个双引号:通过反转字符串,找到反转后第一个双引号的位置,再结合原字符串长度计算出原字符串中最后一个双引号的索引。
  3. 截取目标片段:用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:42:12