Tsql 在标量函数SQL Server 2012中使用if语句
正在尝试返回10位数的电话号码 --我认为我在删除各种非数字字符方面做得很好 --我需要的帮助是删除“1” 从那些电话号码为“1(xxx)xxx xxxx”格式的案例中Tsql 在标量函数SQL Server 2012中使用if语句,tsql,sql-server-2012,Tsql,Sql Server 2012,正在尝试返回10位数的电话号码 --我认为我在删除各种非数字字符方面做得很好 --我需要的帮助是删除“1” 从那些电话号码为“1(xxx)xxx xxxx”格式的案例中 IF OBJECT_ID (N'dbo.CleanPhone',N'FN') IS NOT NULL DROP FUNCTION dbo.CleanPhone GO CREATE FUNCTION dbo.CleanPhone (@PhoneNumber varchar(200)) RETURNS varchar(10) AS
IF OBJECT_ID (N'dbo.CleanPhone',N'FN') IS NOT NULL
DROP FUNCTION dbo.CleanPhone
GO
CREATE FUNCTION dbo.CleanPhone (@PhoneNumber varchar(200))
RETURNS varchar(10)
AS
BEGIN
DECLARE @CleanPhone varchar(200);
SET @CleanPhone = replace(replace(replace(replace(replace(ltrim(rtrim(@PhoneNumber)),'-',''),' ',''),'(',''),')',''),'.','')
--being mysudo code
IF LEN @CleanPhone > 10 AND Left(@CleanPhone,2) = '1 ' THEN Right(CleanPhone,10)
ELSE @CleanPhone
--end my sudo code
RETURN @CleanPhone
END;
GO
由于您的电话号码具有以下格式:“1(xxx)xxx xxxx” 你可以和我一起去
SET @CleanPhone = replace(replace(replace(replace(replace(ltrim(rtrim(@PhoneNumber)),'-',''),' ',''),'(',''),')',''),'.','')
将上述声明替换为
SET @CleanPhone = right(<all your replace goes here>,10)
RETURN @CleanPhone
SET@CleanPhone=right(,10)
返回@CleanPhone
为了便于代码维护和可读性,我建议使用case语句处理不同的情况
设置@CleanPhone=CASE,条件1然后结果
当条件2产生结果2时
艾尔斯德法瓦尔酒店
结束删除PhoneNumber字段中的所有特殊字符后,只需返回right(CleanPhone,10)。完全不需要IF条件。