我的文字如下:
FHUGBGH(4545496),DFHGUFG(5464564),GFUEIFG(456)
我想删除所有非数字字符,并用逗号连接结果数字。输出应为:
4545496,5464564,456
没有括号或任何内容,只有用逗号分隔的数字部分。
我尝试使用replace
,regexp_replace
等,但未成功。
答案 0 :(得分:1)
使用此:
DistinctErrors = Errors.SelectMany(o => o.References, (o, r) => new {o.Type, r.Name, r.Value})
.Distinct()
.Count();
执行PL / SQL块
4545496,5464564,456
编辑,我刚注意到Postgres旗帜。你可能意味着PQSQL而不是PLSQL,它是Oracle RDBMS。我希望它的作用相似。
答案 1 :(得分:0)
PL / pgSQL或只是普通的SQL,表达式是一样的。使用regexp_replace()
:
如果它保证每个数字串之间只有一个逗号,那么其他地方就不存在:
regexp_replace (txt, '[^\d,]', '', 'g')
如果我们不能依赖它:
trim(regexp_replace (txt, '\D+', ',', 'g'), ',')
\d
.. class shorthand for \[\[:digit:\]\]
- 仅限数字
\D
..对应方:[^[:digit:]]
- 除数字之外的所有内容
'g'
..第四个参数必需替换"全局"而不只是第一场比赛。
演示:
SELECT regexp_replace (txt, '[^\d,]', '', 'g') AS nr1
, trim(regexp_replace (txt, '\D+', ',', 'g'), ',') AS nr2
FROM (VALUES ('FHUGBGH(4545496),DFHGUFG(5464564),GFUEIFG(456)')) t(txt);