環境
SQLServer 2019で動いてますが、もう少し低いバージョンでも大丈夫だと思います。
概要
SQLSERVERでは、TRANSLATE関数の置換後の文字(第3引数)と検索文字(第2引数)の文字数をあわせなければなりませんので、文字列から数値のみを抽出する に紹介されている方法では、エラーがでてしまいます。Functionを作成する方法がちらほら見られますが、あえて関数のみで試してみました。
SQL
SELECT REPLACE(
TRANSLATE(
dbo.V_顧客.固定電話,
REPLACE(TRANSLATE(dbo.V_顧客.固定電話, '0123456789', SPACE(10)),' ',''),
SPACE(LEN(REPLACE(TRANSLATE(dbo.V_顧客.固定電話, '0123456789', SPACE(10)),' ','')))
)
, ' ', '')
AS 電話番号1
FROM dbo.V_顧客
/*REPLACE(TRANSLATE(dbo.V_顧客.固定電話, '0123456789', SPACE(10)),' ','') は数字を除いたもの
例:『(03)1234-5678』 ---> 『()-』
オブジェクト(dbo.V_顧客)やカラム(固定電話)は適宜、ご自身の環境に合わせてください。
お礼
日頃、色々参考にさせていただいておりますので、なにかお返しできないかと、投稿させていただきました。