在下面这篇《获取字符串结尾的电话号码(案例)》中,仞仅中截取电话号码,如果想获取字符串开始的地址呢?
可以写另外一个函数:
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_cutteraddress] ( @source nvarchar(4000) ) returns nvarchar(4000) as begin declare @l int = len(rtrim(@source)) while @l > 0 begin declare @cutstr char(1) = substring(@source,@l,1) if @cutstr like '%[^-0-9]%' break; set @l = @l - 1 end return rtrim(ltrim(substring(@source,1,@l))) end
操作:
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_cutteraddress]([addr]) as [地址] from #tempdata