以非美国格式格式化 Phone 个数字
Formatting Phone Numbers in Non-US format
我有以下代码,我正在尝试重构以按照我需要的格式格式化 phone 数字字段:
STUFF(STUFF(STUFF(REPLACE('02 212345678','02 2','02 '), 7, 0, ' '), 3, 0, ') '), 1, 0, '(')
目前returns的数据是这样的:
(02) 123 45678
我需要这种格式的地方
(02) 1234 5678
问题是右括号后的额外 space 并且两边都有 4 个数字。
根据您的示例,以下方法是否适合您?
with sampledata as (select '02 212345678' num)
select Concat(Stuff('() ',2,0,Left(num,2)), Stuff(Right(num,8),5,0,' '))
from sampledata
您现有的代码可以工作,只需将 7 更改为 8,但我更喜欢将格式和数据分开。代码更易于阅读和修改:
DECLARE @PhoneNumber varchar(20) = '02 212345678';
SELECT FORMATMESSAGE('(%s) %s %s', LEFT(@PhoneNumber, 2), SUBSTRING(@PhoneNumber, 4, 4), SUBSTRING(@PhoneNumber, 8, 4) );
我有以下代码,我正在尝试重构以按照我需要的格式格式化 phone 数字字段:
STUFF(STUFF(STUFF(REPLACE('02 212345678','02 2','02 '), 7, 0, ' '), 3, 0, ') '), 1, 0, '(')
目前returns的数据是这样的:
(02) 123 45678
我需要这种格式的地方
(02) 1234 5678
问题是右括号后的额外 space 并且两边都有 4 个数字。
根据您的示例,以下方法是否适合您?
with sampledata as (select '02 212345678' num)
select Concat(Stuff('() ',2,0,Left(num,2)), Stuff(Right(num,8),5,0,' '))
from sampledata
您现有的代码可以工作,只需将 7 更改为 8,但我更喜欢将格式和数据分开。代码更易于阅读和修改:
DECLARE @PhoneNumber varchar(20) = '02 212345678';
SELECT FORMATMESSAGE('(%s) %s %s', LEFT(@PhoneNumber, 2), SUBSTRING(@PhoneNumber, 4, 4), SUBSTRING(@PhoneNumber, 8, 4) );