SQL Server:如何获得单词中的第一个或第二个字母?

时间:2016-11-11 17:16:42

标签: sql-server

我有一堆英国邮政编码如下:

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

提前感谢您的帮助。

2 个答案:

答案 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))