PostgreSQL 8.0.2(Amazon Redshift)提取字符串数字:REGEXP_SUBSTR无效怎么办?
在Amazon Redshift中提取字符串里的连续纯数字部分
你之前用REGEXP_SUBSTR(identity,'[0-9]')只返回单个数字,是因为[0-9]仅匹配单个数字字符,要提取连续的纯数字序列,需要把正则改成[0-9]+(+表示匹配1次或多次连续的数字)。
针对你的场景,直接使用以下SQL即可得到预期结果:
SELECT REGEXP_SUBSTR(identity, '[0-9]+') AS extracted_numbers FROM your_table;
关键说明:
- 这个正则会匹配字符串中第一组连续的数字,完全覆盖你的示例场景:
- 输入
student:1234→ 输出1234 - 输入
id:driver_license-111-AZ→ 输出111
- 输入
- 如果需要明确指定匹配规则(比如从第一个字符开始找、取第一个匹配项),可以显式传递参数:
SELECT REGEXP_SUBSTR(identity, '[0-9]+', 1, 1) AS extracted_numbers FROM your_table; - 若要处理无数字的情况,可搭配
COALESCE返回默认值:SELECT COALESCE(REGEXP_SUBSTR(identity, '[0-9]+'), '无匹配数字') AS extracted_numbers FROM your_table;
内容的提问来源于stack exchange,提问作者puifais
相关产品推荐
相关产品推荐

