2016-04-23 88 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]" 

顯然不是所有的電話號碼都有s數字的數量,但它應該被格式化。這應該通過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