0
例如我有串cardNo = 1111111111111111
(16位)如何格式化字符串XXXX-XXXX-XXXX-XXXX在Postgres的
我想格式化cardNo通过加破折号( - )每4位:
1111-1111-1111-1111
例如我有串cardNo = 1111111111111111
(16位)如何格式化字符串XXXX-XXXX-XXXX-XXXX在Postgres的
我想格式化cardNo通过加破折号( - )每4位:
1111-1111-1111-1111
如果您使用的是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位四组,然后建立与大社更换s根据您的要求。
如果你正在使用MySQL,它没有这种类型的正则表达式替换的支持,你必须使用基本字符串函数:
SELECT CONCAT(SUBSTRING(col, 1, 4), '-', SUBSTRING(col, 5, 4), '-',
SUBSTRING(col, 9, 4), '-', SUBSTRING(col, 13, 4))
FROM yourTable
谢谢蒂姆:) – Decode
不要只是随机的数据库作为标签。请选择与您的问题相关的特定问题。 – tadman
将裸露卡号直接保存到数据库中不是标准做法。而是加密卡号并将哈希字符串存储到数据库中。 – Daenarys