我有一个数据库,我目前正在修改使用SQL Server 2012.似乎我所有存储的手机号码都缺少0。我已经将值更改为float,因此我可以将列转换为仅接受varchars。我尝试了以下但它给我留下了前面的0,但只有5位而不是所需的全部11位。
UPDATE sampletable
SET Mobile = '07' + substring(Mobile, 7,99)
WHERE charindex('7', Mobile) = 1
我有超过30,000行,所以手动执行此操作太多了,有没有办法可以通过简单的查询来执行此操作?
答案 0 :(得分:0)
如果您缺少前六个字符,请将它们包含在update
:
UPDATE sampletable
SET Mobile = '07' + Mobile
WHERE charindex('7', Mobile) = 1;
编辑:
我认为你对所有的七人制都感到困惑。如果您只想在以0
开头的任何数字之前加7
,请执行以下操作:
update sampletable
set mobile = '0' + Mobile
where mobile like '7%';
答案 1 :(得分: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;