2013-12-23 27 views
0

我有一個數據庫,目前我正在使用SQL Server 2012進行修改。似乎我所有存儲的移動號碼都有0丟失。我已經將值更改爲浮動值,所以我可以將列轉換爲僅接受varchars。我嘗試了以下方法,但它在前面留下了0,但只有5位數字,而不是完整的11位。將0添加到列中的每個值SQL

UPDATE sampletable 
SET Mobile = '07' + substring(Mobile, 7,99) 
WHERE charindex('7', Mobile) = 1 

我有超過30,000行這樣所以這將是太多手動做到這一點,是有辦法,我可以用一個簡單的查詢做到這一點?

+0

你能提供什麼之前'Mobile'看起來像一個例子,你想讓它看起來像後來呢? –

+0

一個例子是76684XXXXX只能成爲076684,需要它變成076684XXXXX。 –

+2

Mobile列是否定義爲varchar或float?如果你將它轉換爲浮點數,你將失去你的前導零。 – swandog

回答

0

如果你缺少的前六個字符,然後簡單地將它們包括在update

UPDATE sampletable 
    SET Mobile = '07' + Mobile 
    WHERE charindex('7', Mobile) = 1; 

編輯:

我想你是所有的七人欖球賽混淆。如果你只是想之前任何號碼7開始把0,那麼這樣做:

update sampletable 
    set mobile = '0' + Mobile 
    where mobile like '7%'; 
+0

這個被執行,但實際上並沒有添加0到任何東西 –

+1

移動存儲爲float或varchar()嗎?浮動上沒有前導0。 –

0
UPDATE SampleTable 
SET Mobile = RIGHT('000000000000' + Mobile, 12) 

如果不工作,那麼很可能是你的「移動」列是數字類型的去掉前導零。 這是一個測試,以防萬一:

SELECT Mobile = RIGHT('000000000000' + CONVERT(VARCHAR(12), Mobile), 12) 
INTO #TestSampleTable 
FROM SampleTable 
; 

SELECT * FROM #TestSampleTable; 
相關問題