Sql 如何排除邮政编码的最后3个字符

Sql 如何排除邮政编码的最后3个字符,sql,sql-server-2012,Sql,Sql Server 2012,我正在尝试显示邮政编码的前4位数字,例如:WC4 5,因此希望从邮政编码中排除最后3个字符,并按每周每个邮政编码的投递次数,如3月份的第1周、第2周。这是我的问题 SELECT [Post Code] ,[Order Date] FROM [TBW_BI].[dbo].[Skids $Orders] where [Country]='united kingdom' and [Order Date] >= '2017-03-01T00:00:00.000'

我正在尝试显示邮政编码的前4位数字,例如:WC4 5,因此希望从邮政编码中排除最后3个字符,并按每周每个邮政编码的投递次数,如3月份的第1周、第2周。这是我的问题

  SELECT

  [Post Code]

  ,[Order Date]


  FROM [TBW_BI].[dbo].[Skids $Orders]

  where [Country]='united kingdom' and 
 [Order Date] >= '2017-03-01T00:00:00.000' AND 
 [Order Date] <= '2017-03-06T00:00:00.000' 
选择
[邮政编码]
,[订购日期]
来自[TBW_BI].[dbo].[Skids$订单]
其中[国家]=“联合王国”和
[订单日期]>=“2017-03-01T00:00:00.000”和

[订单日期]简单的左子句应该:

SELECT  left([Post Code], len([Post Code]) - 3) as [Post Code]
        ,[Order Date]
FROM [TBW_BI].[dbo].[Skids $Orders]
where [Country]='united kingdom' and 
[Order Date] >= '2017-03-01T00:00:00.000' AND 
[Order Date] <= '2017-03-06T00:00:00.000' 
选择left([邮政编码]、len([邮政编码])-3)作为[邮政编码]
,[订购日期]
来自[TBW_BI].[dbo].[Skids$订单]
其中[国家]=“联合王国”和
[订单日期]>=“2017-03-01T00:00:00.000”和

[订单日期]如果您希望始终排除最后三个字符,则此操作应该有效。如果希望所有内容都包含空格后的第一个字符,则取决于第二部分是否始终为4个字符

select substring([Post Code],1,(len([Post Code])-3)) as trimmed_post_code
,[Post Code]
,[Order Date] 
FROM [TBW_BI].[dbo].[Skids $Orders]    
where [Country]='united kingdom' and 
[Order Date] >= '2017-03-01T00:00:00.000' AND 
[Order Date] <= '2017-03-06T00:00:00.000' 
选择子字符串([Post-code],1,(len([Post-code])-3)作为修剪后的\u-Post\u代码
,[邮政编码]
,[订购日期]
来自[TBW_BI].[dbo].[Skids$订单]
其中[国家]=“联合王国”和
[订单日期]>=“2017-03-01T00:00:00.000”和

[订单日期]前4个字符使用
left([Post code],4)
。但问题是,我始终显示了4个承租人,例如:we11(用于we11 2ng)和wc1 4(用于wc1 4lx),因此报告中必须始终包含4个字符。当我应用-3时,它显示了3个字符,其中post代码是wc1 4lx。请提供帮助。是否需要在输出中维护空格,即“wc14”与“wc1 4”(适用于wc1 4lx)之间是否有关系?您好,谢谢,没有空格就解决了。用于替换和子字符串。