【问题标题】:split address into column in sql/oracle将地址拆分为 sql/oracle 中的列
【发布时间】:2021-02-11 07:31:42
【问题描述】:

请帮助我将地址拆分为船员姓名、城市、人员姓名、所有者姓名。我只想要列直到所有者名称。

示例地址:-

1) ESS GEE ELECTRO/SOLUTIONS PVT. LT /  noida / BIJENDRA SINGH / . / 9999077027 / 784261 / 2000027697
2) / delhi / BIJENDRA SINGH / NAKI RAM / 9891884813 / 784262 / 2000057282
3) ELECTRO PVT. LT/  punjab / w/o birbal SINGH /  / 9310202020 / 784270 / 2000080264

我们可以使用'/ '进行拆分。

也可以有空的船员姓名或城市名称(如示例 2 和示例 3-owner_name),因此在这种情况下,我们将在结果中显示空列。

【问题讨论】:

  • 应该如何拆分像ELECTRO PVT. LT/ w / o punjab / w/o birbal SINGH这样的字符串,其中斜线在一个值内,但它只能通过人眼识别?

标签: sql oracle split


【解决方案1】:

我承认处理多个字符的分隔符是很棘手的。因此,我最简单的建议是将单独的字符替换为 '|''^' 之类的单个字符。

这就很简单了:

select x.*,
       replace(regexp_substr(replace(address, '/ ', '|'), '[^|]*[|]', 1, 1), '|', '') as crew_name,
       replace(regexp_substr(replace(address, '/ ', '|'), '[^|]*[|]', 1, 2), '|', '') as city,
       replace(regexp_substr(replace(address, '/ ', '|'), '[^|]*[|]', 1, 3), '|', '') as person_name,
       replace(regexp_substr(replace(address, '/ ', '|'), '[^|]*[|]', 1, 4), '|', '') as owner
from (select 'ESS GEE ELECTRO/SOLUTIONS PVT. LT /  noida / BIJENDRA SINGH / . / 9999077027 / 784261 / 2000027697' as address from dual union all
      select '/ delhi / BIJENDRA SINGH / NAKI RAM / 9891884813 / 784262 / 2000057282' as address from dual union all
      select 'ELECTRO PVT. LT/  punjab / w/o birbal SINGH /  / 9310202020 / 784270 / 2000080264' as address from dual
     ) x;

Here 是一个 dbfiddle。

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多