拜托我需要你的帮忙。
使用 SQL Server 2005 中的正则表达式,我得到了邮政地址的门牌号。一切正常。但我对某些方向有疑问。
比如我有地址Florecita Terrace 1746-B floor 3
,你得到的家数是1746-B
,但是同一个地址可以写成这样:Florecita Terrace 1746 B floor 3
在这个方向上得到门牌号1746
,把字母丢了,B
因为它是分开的,不像以前那样用“- "
我必须更改我的查询才能获得1746 B
什么?
这得到(门牌号):
Florecita Terrace 1746 B floor 3 | **1746**
这需要得到(门牌号):
Florecita Terrace 1746 B floor 3 | **1746 B**
这是我使用的查询:
declare @address table (address varchar(100))
insert into @address
select 'Florecita Terrace 1746 B floor 3' union
select 'Florecita Terrace 1746-B blablabla' union
select 'Street Flor 4141'
select
address,
--patindex('%[0-9]%', address) as 'start',
--charindex(space(1), address + space(1), patindex('%[0-9]%', address)) - (patindex('%[0-9]%', address)) as 'length',
case
when patindex('%[^0-9]%' , address) > 0
then substring(address, patindex('%[0-9]%', address), charindex(space(1), address + space(1), patindex('%[0-9]%', address)) -
(patindex('%[0-9]%', address)))
else address
end as 'numeric'
from @address
非常感谢您的帮助!