2016-11-11 12 views
2

私は以下のように、英国の郵便番号の束を持っている:SQL Server:1文字目または2文字目の単語を取得する方法は?

Sector 
S1 1 
RH16 9 
NP23 9 
N81 1 

これは、セクターレベルです。私はスペースレベルの前にセクターレベルコードの最初の部分を取るだけで、地区レベルを得ることができます。すなわち「S1 1」ではなく「S1」である。すなわち:「S」の代わりに、代わりに「RH16 9」の「S1 1」または「RH」を

PARSENAME(REPLACE(c.Sector, ' ','.'),2) 

、郵便エリア

はただの文字を使用することによって見つけることができます。

最初の文字または2番目の文字を使用するクエリを書くことはできますが、数字を打つ前に最初の1〜2文字を得るにはどうすればよいですか?あなたの助けのために事前に

Sector    PostArea 
S1 1      S 
RH16 9     RH 
NP23 9     NP 
N81 1     N 

ありがとう:

最終的な結果は次のようになります。

答えて

2
Declare @YourTable table (Sector varchar(50)) 
Insert Into @YourTable values 
('S1 1'), 
('RH16 9'), 
('NP23 9'), 
('N81 1') 

Select * 
     ,PostArea=Substring(Sector,1,patindex('%[0-9]%',Sector)-1) 
from @YourTable 

戻り

Sector PostArea 
S1 1 S 
RH16 9 RH 
NP23 9 NP 
N81 1 N 

編集:トラップ非数字文字列に

PostArea=case when patindex('%[0-9]%',Sector)=0 then '' else Substring(Sector,1,patindex('%[0-9]%',Sector)-1) end 
0

select SUBSTRING(Sector,0,PATINDEX('%[0-9]%',Sector))

関連する問題