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