在SQL列的每个值中附加0

时间:2013-12-23 22:54:48

标签: sql database sql-server-2012 nested-queries

我有一个数据库,我目前正在修改使用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行,所以手动执行此操作太多了,有没有办法可以通过简单的查询来执行此操作?

2 个答案:

答案 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;