Presto SQL - 从右侧最后一次出现的 char (:) 中提取字符串

问题描述 投票:0回答:1

我的目标是从每个字符串的右侧获取最后一次出现的字符连字符之后的所有子字符串,并用连字符分隔。我已经尝试过,但如果字符串中遇到多个“连字符”,我会得到错误的值。有没有什么解决办法或者办法。提前谢谢您。

示例输入和结果:

我的代码: substring(con.itemid,INSTR(con.itemid,'-')+1) as itemid_suffix,

enter image description here

另一个代码但得到错误的结果: 选择 SUBSTR(ltrim(regexp_extract('AAAA-BBBB-PUB','-([^:]*)',1)),1,2)

regex regex-lookarounds presto trino
1个回答
0
投票

根据提供的数据,您可以使用任何非连字符和字符串结尾的简单模式 -

[^-]*$
:

-- sample data
with dataset(str) as(
    VALUES ('aaa-bbb'),
        ('aaa-bbb-ccc'),
        ('111-112') 
) 

-- query
SELECT regexp_extract(str, '[^-]*$')
FROM dataset;

输出:

 _col0
-------
 bbb
 ccc
 112
© www.soinside.com 2019 - 2024. All rights reserved.