2016-11-11 162 views
2

我有一堆的英國郵政代碼如下:SQL Server:如何獲取單詞中的第一個或第二個字母?

Sector 
S1 1 
RH16 9 
NP23 9 
N81 1 

這是在行業層面。我可以通過在空間之前獲得部門級代碼的第一部分來獲得地區級別。即:「S1」而不是「S1 1」。即:「S」,而不是「S1 1」或「RH」,而不是「RH16 9」

PARSENAME(REPLACE(c.Sector, ' ','.'),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))

相關問題