0

あなたの助けが必要です。

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

ご助力ありがとうございます!

4

2 に答える 2

0
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)) +(case when address not like ('%-%') then 2 else 1 end) - 
                                (patindex('%[0-9]%', address)))
        else address
    end as 'numeric'
from @address
于 2013-10-04T09:38:42.997 に答える
0

CLR を有効にし、.NET 正規表現プロシージャのラッパーを作成する .NET CLR アセンブリを追加すると、SQL Server でフル機能の正規表現を使用できるようになります。Visual Studio で自分でビルドする必要がない良い例は、ここにあります。

于 2013-10-03T23:14:18.653 に答える