SQL 从字符串中删除空格、非数字和第二个字符



我的表格中有以下列

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

我想以以下格式结束。

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

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

有人可以指出正确的方向吗?

如果它们都是美国电话号码,您可以尝试:

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

读过第一个空格,删除其他空格:

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

这假设您的格式是严格的,如果它可以是带有可选空格的任何国家/地区代码,则需要另一个查找表,因为它们的长度是可变的。

我在UPDATE命令中嵌套了 2 个操作。最里面的REPLACE摆脱了空间。RIGHT只剩下 10 个字符,应该删除国家/地区代码前缀(考虑到它仅适用于美国(。

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

您所需要的只是正确的替换功能。无论国家代码如何: 尝试运行以下命令:

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
select replace(REPLACE(MobilePhone,' ',''), '+','')
From table

相关内容

最新更新