如何在 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
例如我有字符串 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