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

Amazon Redshift SQL正则表达式:提取列表首个数字元素方法

提取Redshift列表字符串中的第一个数字

别担心,就算完全没接触过正则表达式,也能轻松搞定这个需求!在Amazon Redshift里,我们有两种简单的方法可以提取你要的第一个数字,我给你详细说清楚:

方法一:用正则表达式函数(更通用健壮)

Redshift支持REGEXP_SUBSTR函数,专门用来提取符合正则规则的子串。针对你的[1245,2324,4433]格式,直接用下面的SQL就能拿到第一个数字:

-- 替换成你的表名和列名
SELECT REGEXP_SUBSTR(your_column, '\\[(\\d+)', 1, 1, 'e') AS first_number
FROM your_table;

我给你拆解一下每个部分的意思,完全不用记正则规则也能明白:

  • your_column:替换成你存储这个列表字符串的实际列名
  • '\\[(\\d+)':这个正则的作用是匹配左方括号[后面的一串数字,\\[是转义左括号(SQL里反斜杠要写两个才能生效),(\\d+)表示"一个或多个数字",并且把这部分标记为我们要提取的内容
  • 1,1,'e':前两个1分别表示"从字符串第1个字符开始找"和"取第一个匹配的结果",'e'是告诉函数只返回我们标记的数字部分,而不是包含左括号的整个匹配串

你可以先拿固定字符串测试一下,确保没问题:

SELECT REGEXP_SUBSTR('[1245,2324,4433]', '\\[(\\d+)', 1, 1, 'e') AS first_number;

执行后会直接返回1245。

方法二:用字符串位置函数(更直观,适合简单场景)

如果你实在不想碰正则,也可以用SUBSTRING+POSITION的组合来实现,前提是你的列表里至少有两个元素(也就是一定有逗号):

SELECT SUBSTRING(your_column, POSITION('[' IN your_column) + 1, POSITION(',' IN your_column) - POSITION('[' IN your_column) - 1) AS first_number
FROM your_table;

这个逻辑很直白:

  1. 先用POSITION('[' IN your_column)找到左括号的位置,加1就是第一个数字的起始位置
  2. 再用POSITION(',' IN your_column)找到第一个逗号的位置,用逗号位置减去左括号位置再减1,就是第一个数字的长度
  3. 最后用SUBSTRING提取出这段内容

不过要注意,如果你的列表可能只有一个元素(比如[1245]),这个方法会出错,所以更推荐用第一种正则的方法,适配所有情况。

内容的提问来源于stack exchange,提问作者monika_w091

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:26:54