【发布时间】:2018-06-29 08:55:16
【问题描述】:
模式:d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55;
如果想得到=&;之间的第一个数字
output:
123
如果我想在= & ; 之间获得第二次出现
output:
134
使用的正则表达式:
select
regexp_substr(' d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55;','d[0-9]+=' ,1,2) as b;
但输出是这样的:
d1=
任何指向这个方向的指针都会有所帮助。
【问题讨论】:
-
Amazon Redshift
regex_substr似乎不支持捕获组提取。尝试regexp_replace(s, '.*;d1=([^;]+).*', '\1')提取d1值。 -
选择 regexp_substr('d0=123;d1=134;d2=123;d3=13;d4=33;d5=44;d6=55;', '(d[0-9] +=[0-9]+;)',1,7) 作为 b;这给出的输出为:: d6=55;我仍然试图避免 d6&;从上面的输出
-
你能不能把所有的 = 换成 ;,然后用 split_part(yourstring,';',2) 再用 4 作为下一个值?
标签: sql regex amazon-redshift