【发布时间】:2013-06-26 05:52:02
【问题描述】:
我在一个 sql server 数据库上有一个名为 Houses 的表,该表有一列包含(丹麦)地址。在丹麦,街道名称总是在门牌号之前,如果是公寓,则在公寓信息之前。我想将街道名称和号码分成两个字符串,而忽略公寓信息。我的数据如下所示:
Address
Fisker Vejen 48B, 1.TV
Baunevej 29
因此,有些街道名称超过 1 个单词,有些地址包含公寓信息,有些则没有。一些门牌号码也有非数字字符。我希望它是:
Street_Name House_Number
Fisker Vejen 48B
Baunevej 29
我可以使用以下代码提取街道名称:
select case when a.NumStart> 0 then LEFT(a.Address,a.NumStart-1) ELSE a.Address END as Street_Name,
FROM
(select patindex('%[0-9]%',Address) as [NumStart], Address from Houses) a
但是没有楼层信息我无法获得门牌号。有人可以帮忙吗?
谢谢!
【问题讨论】:
-
',' 总是介于门牌号和公寓信息之间?
-
是的,但街道号码也可能包含非数字字符。我刚刚更新了问题。
标签: sql sql-server string