如何在 Postgres 中格式化字符串 xxxx-xxxx-xxxx-xxxx

How to format String xxxx-xxxx-xxxx-xxxx in Postgres

例如我有字符串 cardNo = 1111111111111111 (16 digits)

我想通过每 4 位数字添加破折号 (-) 来格式化 cardNo:

1111-1111-1111-1111

如果您使用的是 Postgres,则可以利用 regexp_replace() 功能:

SELECT regexp_replace(t.col::text, '(\d{4})(\d{4})(\d{4})(\d{4})', '---', 'g')
FROM
(
    SELECT 1111111111111111 AS col
) t

在这里,我们匹配并捕获四组中的 16 位数字,然后根据您的要求用破折号构建替换。

如果您使用 MySQL,它不支持这种正则表达式替换,您将不得不使用基本字符串函数:

SELECT CONCAT(SUBSTRING(col, 1, 4), '-', SUBSTRING(col, 5, 4), '-',
              SUBSTRING(col, 9, 4), '-', SUBSTRING(col, 13, 4))
FROM yourTable