2017-02-24 55 views
0

例如我有串cardNo = 1111111111111111(16位)如何格式化字符串XXXX-XXXX-XXXX-XXXX在Postgres的

我想格式化cardNo通過加破折號( - )每4位:

1111-1111-1111-1111 
+1

不要只是隨機的數據庫作爲標籤。請選擇與您的問題相關的特定問題。 – tadman

+1

將裸露卡號直接保存到數據庫中不是標準做法。而是加密卡號並將哈希字符串存儲到數據庫中。 – Daenarys

回答

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位四組,然後建立與大社更換s根據您的要求。

如果你正在使用MySQL,它沒有這種類型的正則表達式替換的支持,你必須使用基本字符串函數:

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

謝謝蒂姆:) – Decode