2016-08-05 73 views
0

我在表Table1中有一个名为Address1的字段。拆分地址 - TSQL

这是在这一领域数据的例子 -

8布里克巷和11 Balkerne驱动

我想在查询吐街道和号码,但我与如何实现这一奋斗。

任何帮助将是伟大的。

感谢

+0

你能显示预期的结果? –

+0

下面是该领域的数据示例 - 8砖巷和11 Balkerne驱动器或它可能是1c安全街 我正在写一个查询尝试并实现以下从Address1字段。 在上面的例子中,8和11会拉回“HouseNumber”。 在上面的例子中,1c将拉回为“HouseName” 在以上示例中,Safe Street,Brick Lane和Balkerne Drive将出现在“街道” – ikilledbill

回答

1
SELECT 
LEFT(Address1, PATINDEX('%[a-z]%', Address1)- 1) as HouseNumber, 
SUBSTRING(Address1, PATINDEX('%[a-z]%', Address1), LEN(Address1)) as Street 
FROM Table1 

使用PATINDEX找到时HouseName开始,这样你可以单独的地址。
这种预期的结果:

HouseNumber Street 
8   Brick Lane 
11   Balkerne Drive 

我希望这帮助。

1

我asssuming要分割从文本的数量,你可以使用

SELECT Left(Address1,CHARINDEX(' ',Address1,0)-1) as houseNumber, 
    Right(Address1,Len(Address1)-CHARINDEX(' ',Address1,0)) as houseStreet 
From Table1 
+0

使用组合结尾 - \t \t CASE when PATINDEX('%[^ 0 (Address1,CHARINDEX('',Address1,0)-1))= 0 \t \t THEN left(Address1,CHARINDEX('',Address1,0)-1)ELSE NULL END AS BuildingNumber , \t \t CASE WHEN PATINDEX( '%[^ 0-9]%',左(地址1,CHARINDEX( ' 'Address1,0)-1))> 0 \t \t THEN左(地址1,CHARINDEX('' ,Address1,0)-1)ELSE NULL END AS BuildingName, \t Right(Address1,Len(Address1)-CHAR INDEX('',Address1,0))AS Street, – ikilledbill