我有一些地址数据需要解析。除楼层数据外,大多数地址信息都以适合我的方式提供。
对于以不同方式获取的楼层数据,我可能会得到以下格式:
“大街 123 号 2 楼”或“大街 123 号 2 楼”
如果我使用 case...when 语句来解析我的数据,如何让它确定何时获取之后的数字或之前的数字?最终我想要“Floor 2”作为示例 1,“2nd Floor”作为示例 2。
这是我当前使用的sql。
CASE WHEN (addr LIKE 'floor%' and addr LIKE '%[0-9]%' ) THEN SUBSTRING(addr, CHARINDEX('Floor ', addr),
LEN(addr))
最佳答案
使用 PatIndex() 之和的另一个选项
示例
Declare @YourTable table (addr varchar(50))
Insert into @YourTable values
('123 Main Street Floor 2')
,('123 Main Street 2nd Floor')
,('123 Main Street')
select *
,FloorNr = NullIf(ltrim(rtrim(substring(addr,patindex('%Floor [1-9]%',addr)+patindex('% [1-9]% Floor',addr),25))),addr)
From @YourTable
返回
addr FloorNr
123 Main Street Floor 2 Floor 2
123 Main Street 2nd Floor 2nd Floor
123 Main Street NULL
关于sql - 地址解析 - 楼层#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443288/