2016-04-23 14 views
2

私は一種のようになり、電話番号のデータベースがあります。SQL:フォーマットの電話番号(空白を挿入する)

0041 123423423 
0042 783728492 
0043 832792922 
0044 738922222 

をこのように見える数字もあります

00432 7462893-99 
0042 873946278-100 
0041 837227-1234 

は、今度は、すべての電話番号を次の形式に変換します:

"00[2 digits] [4 digits] [5 digits] [3 digits]" 

明らかにすべての電話番号がそれはそれにもかかわらずフォーマットされているはずです。これはSQLを介して行う必要があります(私は別の可能性があるとは思わない)。私はMySQLを使用しています。電話番号の

例:

Unformatted: 004912345 
Formatted: 0049 1234 5 

ありがとう!

+0

あなたのフォーマットされた形式の結果です[ 4桁] [4桁] [1桁] –

+0

すべての数字は「00」で始まり、すべての電話番号が同じ桁数(13)を維持していますか?超えている場合、カットオフがあるべきか?より低い場合は、入力する必要がありますか?それに応じて改訂してください。 – Parfait

答えて

0

これはあなたを助けるべきでは...最後の列は、あなたが望むどのようにあなたの説明は、それがどのように見える変換するために一致していないようです

SELECT 
    @number := REPLACE(number,' ','') as minusspace, 
    @number := REPLACE(@number,'-','') as minusdash, 
    @first := LEFT(@number,4) as first, 
    @second := RIGHT(LEFT(@number,8),4) as second, 
    @third := RIGHT(LEFT(@number,13),LEAST(LENGTH(@number)-8,5)) as third, 
    @fourth := RIGHT(LEFT(@number,16),LEAST(LENGTH(@number)-13,3)) as fourth, 
    TRIM(CONCAT(@first,' ',@second,' ',@third,' ',@fourth)) as formatted_phone 
FROM phone 

sqlfiddle

関連する問題