【发布时间】:2014-10-28 20:56:34
【问题描述】:
我有这样的事情
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:crm_case_add ATTR=ID:CrmCasePhoneNumber EXTRACT=TXT
所有电话号码均采用以下格式:800-128-1990 或 (800)128-1981 或 291 399 5913
我想要像 8002893884 这样的纯文本。我该怎么做?
【问题讨论】:
我有这样的事情
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:crm_case_add ATTR=ID:CrmCasePhoneNumber EXTRACT=TXT
所有电话号码均采用以下格式:800-128-1990 或 (800)128-1981 或 291 399 5913
我想要像 8002893884 这样的纯文本。我该怎么做?
【问题讨论】:
只需将以下行添加到您的宏中:
SET !EXTRACT EVAL("'{{!EXTRACT}}'.replace(/[-()\\s]/g,'')")
【讨论】:
对于那些希望使用 SQL 进行操作的人
我使用一个功能来清理电话号码,这将解决所有电话号码问题或清除该字段。如果为空则返回 Null(以防止错误)
Print'/*Fix Phone Numbers Call*/'
Update tblTemp
Set Phone = dbo.fnPhoneFix(tblTemp.Phone)
From tblTemp
要创建函数,请使用以下代码:
CREATE FUNCTION [dbo].[fnPhoneFix](@PhoneOld VarChar(20))
Returns VarChar(10)
AS
Begin
Declare @iCnt Int = 0
Declare @PhoneNew VarChar(15) = ''
IF @PhoneOld IS NULL
RETURN NULL;
While @iCnt <= LEN(@PhoneOld)
Begin
IF Substring(@PhoneOld,@iCnt,1) >= '0' AND Substring(@PhoneOld,@iCnt,1) <= '9'
Begin
SET @PhoneNew = @PhoneNew + Substring(@PhoneOld,@iCnt,1)
End
Set @iCnt = @iCnt + 1
End
If LEN(@PhoneNew) > 10 and Left(@PhoneNew, 1) = '1'
Set @PhoneNew = RIGHT(@PhoneNew,10);
Else
Set @PhoneNew = Left(@PhoneNew,10);
If LEN(@PhoneNew) <> 10
Set @PhoneNew ='';
Return @PhoneNew
End
【讨论】: