我已经获得了英国邮政编码的结果集。有些是用空格格式化的,有些则不是S14HG和S1 4HG
我希望我的选择查询只返回结果中邮政编码值的外部部分,即' S1'
我可以使用以下公式在Excel中执行此操作:
=IF(ISERROR(LEFT(A1,LEN(A1)-3)),””,LEFT(A1,LEN(A1)-3))
是否可以通过SELECT查询在SQL中执行相同的功能?
答案 0 :(得分:2)
英国邮政编码可以有many formats for their outward code.
之一但是,正如您可以从该链接中的可能格式中看到的那样,邮政编码的其余部分采用了一致的格式。如果您确信您的邮政编码是正确的,您可以删除任何空格和最后3个字符:
declare @Postcodes table (Postcode nvarchar(10));
insert into @Postcodes values
('S1 4HG')
,('S14HG')
,('S10 4HG')
,('S104HG');
select Postcode
,replace(left(Postcode,len(Postcode)-3),' ','') as OutwardCode
from @Postcodes
输出:
Postcode OutwardCode
S1 4HG S1
S14HG S1
S10 4HG S10
S104HG S10
答案 1 :(得分:-1)
您可以使用LEFT()
而不考虑空格,因为您只需要前两个空格。
SELECT LEFT('S1 4HG',2)
或者只是摆脱空间......
declare @t varchar(64) = 'S 1 4 H G'
SELECT LEFT(REPLACE(@t,' ',''),2)