首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Teradata子字符串超出界限

Teradata子字符串超出界限
EN

Stack Overflow用户
提问于 2016-07-05 17:59:24
回答 1查看 512关注 0票数 2

我在计算子字符串之间的界限时遇到了问题。例如,对于字符串063016_shape_tea_cleanse__emshptea1_,我希望将其子串出emshptea1,但它也必须用于字符串063016_shape_tea_cleanse__emshptea1_TESTDATA_HERE

目前我有:

代码语言:javascript
复制
sel SUBSTR('063016_shape_tea_cleanse__emshptea1_',POSITION('__' IN '063016_shape_tea_cleanse__emshptea1_')+2,
    POSITION('_' IN  SUBSTR('063016_shape_tea_cleanse__emshptea1_',POSITION('__' IN '063016_shape_tea_cleanse__emshptea1_') + 2,CHARACTER_LENGTH('063016_shape_tea_cleanse__emshptea1_') - (POSITION('__' IN '063016_shape_tea_cleanse__emshptea1_') + 2)))-1)

但这是错误的,因为它试图将27到-1进行子字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 19:01:19

您可以使用正则表达式,这将提取__与以下_或字符串末尾之间的所有内容:

代码语言:javascript
复制
REGEXP_SUBSTR(col, '(?<=__).+?(?=(_|$))')

'(?<= )'是一个回顾,即搜索以前的字符而不将其添加到结果中。这里:搜索__

'.+'匹配任何字符,一次或多次。这将匹配到字符串的末尾(“贪婪”),'?' (“懒惰”)会阻止这一点。

'(?= )'是前瞻性的,即搜索以下字符而不将其添加到结果中。

管道在多个选项中拆分一个表达式。这里不是下划线字符就是字符串$的结尾

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38209763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档