我的目标是从每个字符串的右侧获取最后一次出现的字符连字符之后的所有子字符串,并用连字符分隔。我已经尝试过,但如果字符串中遇到多个“连字符”,我会得到错误的值。有没有什么解决办法或者办法。提前谢谢您。
示例输入和结果:
我的代码: substring(con.itemid,INSTR(con.itemid,'-')+1) as itemid_suffix,
另一个代码但得到错误的结果: 选择 SUBSTR(ltrim(regexp_extract('AAAA-BBBB-PUB','-([^:]*)',1)),1,2)
根据提供的数据,您可以使用任何非连字符和字符串结尾的简单模式 -
[^-]*$
:
-- 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