問題來自: 以下是Insus.NET的解決方法,僅是截取字元串結尾的電話號碼即可,寫一個簡的自定義函數: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: Insus.NET -- Blog: https://insus.c ...
以下是Insus.NET的解決方法,僅是截取字元串結尾的電話號碼即可,寫一個簡的自定義函數:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Insus.NET -- Blog: https://insus.cnblogs.com -- Create date: 2019-06-21 -- Update date: 2019-06-21 -- Description: 獲取字元串結尾的電話號碼 -- ============================================= CREATE FUNCTION [dbo].[svf_CutterPhone] ( @source NVARCHAR(4000) ) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @L INT = LEN(RTRIM(@source)) DECLARE @phone NVARCHAR(4000) = N'' WHILE @L > 0 BEGIN DECLARE @cutstr CHAR(1) = SUBSTRING(@source,@L,1) IF @cutstr LIKE '%[^-0-9]%' BREAK; ELSE SET @phone = @cutstr + @phone SET @L = @L - 1 END RETURN @phone ENDSource Code
有了此函數,網友的問題,實現如下:
CREATE TABLE #tempData ([Addr] NVARCHAR(MAX)) INSERT INTO #tempData ([Addr]) VALUES(N'龍沙區卜奎南大街(交通管理處對過) 0452-2228858'), (N'曲線小區6門市地下3,4號 18746016893'), (N'南崗區曲線街76號 86420040'), (N'南崗區理治街29號208 209 0451-82737507'), (N'南崗區淮河路365-8號 0451-82384075'), (N'香山路12-2號金源小區E棟1-5號層3號門市0451-55529958'), (N'望奎縣五街二十九委29幢289號0455-6711616'), (N'軟體園小區A-2棟8號5層501、502、503室0451-55652189'), (N'北大營聖源小區1號樓4,5號門市 0467-5066001'), (N'立新街三委(繁華大街325號)0455-4622932'), (N'中央大街95號 0451---56768888'), (N'衛生路西側興華建材大市場3號樓A1B1-A5B5 0455-6499999') SELECT [Addr], [dbo].[svf_CutterPhone]([Addr]) AS [phone] FROM #tempDataSource Code
補充,獲取地址,可以參考下麵這篇《獲取字元串開始的地址(案例)》https://www.cnblogs.com/insus/p/11065053.html