2017-08-10 50 views
3

我有以下的列在我的表SQL去掉空格,非数字和第二个字符的字符串从

MobilePhone 
---------- 
+1 647 555 5556 

我想用下面的格式来结束。

基本上删除'+'号,国家代码'1'和所有空格。

MobilePhone 
---------- 
6475555556 

有人可以请指向正确的方向。

+0

国家代码是否始终为1个字符? –

+0

['REPLACE()'](https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql)function –

+1

尝试了解'SUBSTRING'&'REPLACE'函数在SQL Server中。 –

回答

3

如果他们都是美国的电话号码,你可以尝试:

select RIGHT(REPLACE(MobilePhone,' ',''),10) 
From table 
+0

感谢LONG,Siyual ......这样做! –

0

我在一个UPDATE命令嵌套2个操作。最内层REPLACE摆脱空间。 RIGHT只保留10个字符,应该删除国家/地区代码前缀(因为它仅限于美国)。

update tbl set MobilePhone= RIGHT(REPLACE(MobilePhone, ' ', ''),10) 
1

阅读过去的第一空间,删除其他空间:

REPLACE(SUBSTRING(MobilePhone, CHARINDEX(' ', MobilePhone, 1), LEN(MobilePhone)), ' ', '') 

这里假设你的格式是严格的,如果它可以是任何国家代码与可选的空间,你需要另一个查找表,因为它们是可变的长度。

+0

这是比我提供的更好的答案。 +1 :) –

0
select replace(REPLACE(MobilePhone,' ',''), '+','') 
From table 
0

所有你需要的是正确和替换功能。无论国家代码: 请尝试运行此操作:

declare @a varchar(30) = '+1 510 999 1234' 
declare @b varchar(30) = '+91 98318 12345' 

SELECT RIGHT(REPLACE(@a,' ',''),10) --5109991234 
SELECT RIGHT(REPLACE(@b,' ',''),10) --9831812345 
相关问题