我有一个SQL表,其中包含以下电话号码列。
(201) 411-5200x4002
1 (5410) 651-8868 x 5
1-308-987-5920 x8031
2118477656
2195992321x289
313-877-5916
我需要从这些电话号码中提取Area Code
。区号是数字的前三位数。但如果我们也有国家代码(1(5410)651-8868),那么很难找到。
我正在使用SQL Server 2012 ...
请帮忙。
答案 0 :(得分:1)
您可以创建一个功能,您可以将手机传递给否,它会返回区号。
CREATE FUNCTION [dbo].[f_GetAreaCode]
(
@phoneNumber as nvarchar(200)
)
RETURNS nvarchar(50)
AS
BEGIN
-- Declare the return variable here
DECLARE @areaCodeAbbr as nvarchar(50)
-- Add the T-SQL statements to compute the return value here
if Exists(select 1 from sys.tables where @phoneNumber like '1-%' or @phoneNumber like '1(%') or @phoneNumber like '1 %')
set @phoneNumber = RIGHT(@phoneNumber,len(@phoneNumber)-2)
set @phoneNumber = replace(@phoneNumber,'(','')
set @phoneNumber = replace(@phoneNumber,')','')
set @phoneNumber = replace(@phoneNumber,'-','')
set @phoneNumber = LTRIM(@phoneNumber)
SELECT
@areaCodeAbbr = left(@phoneNumber,3)
-- Return the result of the function
RETURN @areaCodeAbbr
END
要调用该函数,请编写类似 -
的sqlSelect dbo.f_GetAreaCode('(201) 411-5200x4002')