2013-07-08 30 views
-1

以下查询从我的数据库返回以下示例数据。如果不存在零,则返回零值

select mobileno 
from Person 

抽查结果:

775623655 
0758956556 
0756899955 
777325656 

我怎样才能添加在前面的0,如果没有在返回的值是0?

+3

这应该是相当简单的事情,你尝试什么吗? – LittleBobbyTables

+0

@LittleBobbyTables你想让我展示我试过的东西吗? – Joshua

回答

3
SELECT CASE LEFT(mobileno,1) 
    WHEN '0' THEN mobileno 
    ELSE '0' + isNull(mobileno,'') 
    end as mobileno 
FROM Person 
+0

+1,可能使其'ELSE'0'+ ISNULL(mobileno,'')' –

+0

注意到并更改 – Avitus

+3

理论上这是正确的,因为OP没有指定ID有10个字符。 –

1

使用REPLICATE

SELECT 
    RIGHT(REPLICATE('0', 10) + CAST(mobileno AS VARCHAR(10)), 10) AS mobileno 
FROM person; 

看到它在这里的行动:

2
select right('0000000000' + mobileno, 10) mobileno from Person 
+0

+1因为这是我的首选方式;-) –

+2

该问题未指定该列为10个字符。如果由于国家/地区代码而导致数字超过10,该怎么办? – Avitus

1

你想确保它总是以0开始,长度是10?方式一:REPLACE

SELECT REPLACE(STR(mobileno, 10, 0), ' ', '0') 
FROM dbo.Person 

DEMO

1

哎检查下面的查询。你可以做这样的事情:

declare @table table (temp VARCHAR(MAX)) 

insert into @table values('775623655') 
insert into @table values('0758956556') 
insert into @table values('0756899955') 
insert into @table values('777325656') 

SELECT RIGHT('000000000' + temp , 10) 
FROM @table 

SqlFiddle