首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多重拆分和赋值order_id

多重拆分和赋值order_id
EN

Stack Overflow用户
提问于 2015-09-17 21:52:48
回答 1查看 219关注 0票数 3

我有一些地址字符串,需要对每个组件进行分析。

SQL Fiddle演示

代码语言:javascript
运行
复制
CREATE TABLE Table1 ("ID" int, "address" varchar(41));

INSERT INTO Table1 ("ID", "address")
VALUES
    (1, 'calle 15, lomas del avila'),
    (2, 'calle av. solano edif:Apalache apt-15');

所以我需要用不同的字符分开( .,:;<space>-)

有一个角色我知道怎么做。

代码语言:javascript
运行
复制
SELECT ID, s.token
FROM   Table1 t, unnest(string_to_array(t.address, ' ')) s(token);

如何链接多个unnest和如何分配一个OrderID?

代码语言:javascript
运行
复制
| ID |         token | orderID
|----|---------------|--------
|  1 |         calle |    1
|  1 |           15, |    2
|  1 |         lomas |    3
|  1 |           del |    4
|  1 |         avila |    5
|  2 |         calle |    1
|  2 |           av. |    2
|  2 |        solano |    3
|  2 | edif:Apalache |    4
|  2 |        apt-15 |    5

在本例中,第二行15,将被拆分为15null,因此可以丢弃第二个结果,并且顺序不会改变。

但在最后2行edif:Apalacheapt-15中,第二次拆分将产生edifApalacheapt15,因此orderID将从4到7:

代码语言:javascript
运行
复制
|  2 | edif     |    4
|  2 | Apalache |    5
|  2 | apt      |    6
|  2 | 15       |    7
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 23:02:20

使用翻译()

代码语言:javascript
运行
复制
SELECT "ID", token, row_number() over (partition by "ID")
FROM (
    SELECT "ID", s.token
    FROM   
        Table1 t, 
        unnest(string_to_array(translate(t.address, '.,:;-', '     '), ' ')) 
            s(token)
    WHERE token <> ''
    ) sub

SqlFiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32640552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档