我有一堆英国邮政编码如下:
Sector
S1 1
RH16 9
NP23 9
N81 1
这是一个行业级别。我可以通过在空格之前获取扇区级代码的第一部分来获得区级别。即:“S1”而不是“S1 1”。
PARSENAME(REPLACE(c.Sector, ' ','.'),2)
只需使用字母就可以找到邮政区域:即:“S”而不是“S1 1”或“RH”而不是“RH16 9”。
我可以在第一个字母或第二个字母的第一个字母或第二个字母的位置写一个查询,但是我如何得到它以便在输入数字之前我能得到前1个或2个字母?
最终结果应该类似于:
Sector PostArea
S1 1 S
RH16 9 RH
NP23 9 NP
N81 1 N
提前感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分:0)
select SUBSTRING(Sector,0,PATINDEX('%[0-9]%',Sector))