如何分割列名称在Postgres 12中使用正则表达式。我希望输出如下所示:
name | 输出 | 可选输出 | abcd | {abcd} |
---|---|---|
abcd1234567efg | {abcd, 1234567, efg} | |
abcd1234567.89efg | {abcd, 1234567.89, efg} | |
abcd12efg34567hij | {abcd, 12, efg, 34567, hij} | {abcd, 12efg, 34567, hij} |
abcd12efg34567.89, hij | {abcd, 12efg, 34567.89, hij} | {abcd, 12efg, 34567.89, hij} |
您可以尝试匹配正则表达式模式d+(?:.d+)?|D+
,它将匹配数字或非数字字符组:
SELECT REGEXP_MATCHES(name, 'd+(?:.d+)?|D+', 'g') AS s
FROM yourTable;
对于abcd12efg34567.89hij
的输入,将匹配以下元素:
s
{abcd}
{12}
{efg}
{34567.89}
{hij}