例如我有字符串cardNo = 1111111111111111
(16位)
我想通过每4位数添加短划线( - )来格式化cardNo:
1111-1111-1111-1111
答案 0 :(得分:1)
如果您使用的是Postgres,则可以利用regexp_replace()
功能:
SELECT regexp_replace(t.col::text, '(\d{4})(\d{4})(\d{4})(\d{4})', '\1-\2-\3-\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