2013-12-23 26 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; 
相关问题