2017-02-24 8 views
0

例えばI持っている文字列CARDNO = 1111111111111111(16桁)私はCARDNOのことでダッシュを追加フォーマットしたいのPostgresで文字列XXXX-XXXX-XXXX-XXXXの書式を設定する方法

( - )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 

、我々はその後、dasheで交換を構築し、四つのグループで16桁と一致して取り込みますあなたの要件ごとに。

あなたが正規表現の置換のサポートのこのタイプを持っていませんMySQLを、使用している場合は、基本文字列関数を使用する必要がありますが:

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

ありがとうTim :) – Decode

関連する問題