3

888.345.ABCD(2223) の形式の電話番号を持つテーブルがあります。私の select ステートメントでは、888.345.2223 を返したいと思います。私は次のようにすることができます:

select replace (phone_number, 'ABCD(2223)', '2223')
from table1

ただし、888.345.EDED(3333) や 888.345.EDED (3333) など、別の電話番号を使用することもできます。クエリの書き方

更新: しかし、888.123.4567 のような電話番号を使用できます。

4

4 に答える 4

1

文字列が複雑すぎる、場所が変わっている、文字数が異なる、またはその他のおかしな動作をしている場合は、正規表現に頼る必要があります...ただし、警告を試みたこのユーザーに関して発生する可能性があるため、正規表現が必要であることを確認してください正規表現の使用に関するその他。

使用できると思われる場合は、複雑な検証を行うための優れた関数を作成する方法を確認してくださいTSQL正規表現ワークベンチ

于 2013-10-09T21:50:32.533 に答える
1

両方の場合:

declare @T table (phone_number varchar(50))
insert into @T values ('888.345.YYYY(2223)'),('888.345.XXXX (2223)')

方法 1:LEFT()RIGHT()関数 の 使用:

SELECT LEFT(phone_number,8) + LEFT(RIGHT(phone_number,5),4)
FROM @T

方法 2:STUFF()SUBSTRING()およびCHARINDEX()関数 を使用します。

SELECT STUFF(phone_number,9,LEN(phone_number)-8,
             SUBSTRING(phone_number, CHARINDEX('(',phone_number)+1,4))
From @T

--Results
888.345.2223
888.345.2223
于 2013-10-09T21:39:32.343 に答える
0

このようなものを試すことができます

select STUFF(LEFT(phone_number, LEN(phone_number)-1),8,6,'.')
from table1

内部 LEFT は最後の ) を削除します。次に、STUFF は残りの不要な文字を に置き換えます。

于 2013-10-09T21:40:31.087 に答える
0

電話番号の形式が変わらないと仮定すると、次のようになります。

select replace (phone_number, RIGHT(phone_number, 10), SUBSTRING(phone_number, 14, 4))
from table1
于 2013-10-09T21:40:44.183 に答える