我想从 MICROSOFT SQL SERVER-2022 中名为 PhoneNumber 的字段中选择电话号码的一部分

问题描述 投票:0回答:1

我想从名为 PhoneNumber 的字段中选择电话号码的一部分,这些号码的形式类似于 (343)765-58584、(343)765-6544、(343)765-6758 等。这些号码具有相同的模式像这样。所以我想从此号码中选择三个不同的部分,即:国家/地区代码、地区代码和号码,即使这些号码不包含国家/地区代码,但我想将其添加为字段以防万一。 这就是我们对输出的期望

国家/地区代码|区号|电话号码|

                 |343          | 767-58584
sql sql-server
1个回答
0
投票

我确信有很多方法可以做到这一点。这是使用

CharIndex
的简单解决方案,这似乎是最明显的。

此处不尝试处理错误...根据数据的一致性和统一程度,您将得到更好或更差的结果。

DECLARE @Phones TABLE (Phone NVARCHAR(100))

DECLARE @Result TABLE (
    OriginalValue NVARCHAR(100),
    Idx INT,
    AreaCode NVARCHAR(100),
    Phone NVARCHAR(100))

INSERT INTO @Phones 
    VALUES 
    (N'(123)456-7890'),
    (N'(123)456-78901')

INSERT INTO @Result (
    OriginalValue,
    Idx)
SELECT 
    p.Phone, 
    CHARINDEX(')', p.Phone) AS Idx
FROM 
    @Phones p

UPDATE r
SET 
    r.AreaCode = SUBSTRING(OriginalValue, Idx-3, 3),
    r.Phone = SUBSTRING(OriginalValue, Idx+1, 100)
FROM @Result r
WHERE r.Idx > 0

SELECT * FROM @Result
© www.soinside.com 2019 - 2024. All rights reserved.