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

Redshift中如何使用charindex提取1.adc.ssg格式字段的adc和ssg?

Redshift中用CHARINDEX提取指定分段内容

针对字段值格式如1.adc.ssg的情况,要提取中间的adc和末尾的ssg,你原SQL的问题是取到了第一部分(1)和第一点后的全部内容(adc.ssg),可以通过两次调用CHARINDEX定位第二个.的位置来实现需求:

修正后的SQL语句

SELECT DISTINCT
       -- 提取第二部分:adc
       LOWER(SUBSTRING(tx_id, CHARINDEX('.', tx_id) + 1, CHARINDEX('.', tx_id, CHARINDEX('.', tx_id) + 1) - CHARINDEX('.', tx_id) - 1)) AS t1,
       -- 提取第三部分:ssg
       LOWER(SUBSTRING(tx_id, CHARINDEX('.', tx_id, CHARINDEX('.', tx_id) + 1) + 1)) AS t2
FROM #test

语句说明

  • CHARINDEX('.', tx_id):定位第一个.的位置,记为pos1
  • CHARINDEX('.', tx_id, pos1 + 1):从pos1+1的位置开始查找第二个.,得到位置pos2
  • 提取adc:从pos1+1开始,长度为pos2 - pos1 - 1,刚好截取两个.之间的内容
  • 提取ssg:从pos2+1开始截取到字符串末尾,Redshift中SUBSTRING省略长度参数时默认取到最后

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:35:23