在SQL中删除值并将值从单列拆分为多个

时间:2019-07-17 09:51:26

标签: sql oracle

我有一个名为STREETNAME的列,其中有基于该模型的数据:townNamestreetName1,其中1streetName的房子。如何从整列中删除townName,并将房屋数量放入名为STREETNO的单独列中?

2 个答案:

答案 0 :(得分:1)

我建议使用regexp_substr()。这似乎是Oracle中最简单的方法,用于拆分字符串,并用逗号分隔各个组件:

select regexp_substr(streetname, '[^,]+', 1, 1) as town,
       regexp_substr(streetname, '[^,]+', 1, 2) as street,
       regexp_substr(streetname, '[^,]+', 1, 3) as num
from (select 'town, street, 123' as streetname from dual) x

答案 1 :(得分:0)

您可以在此处尝试使用REGEXP_REPLACE

SELECT
    REGEXP_REPLACE(STREETNAME, '^[^,]+, (.*)$', '\1') AS STREETNAME_NO_TOWN,
    REGEXP_REPLACE(STREETNAME, '^.* (.*)$', '\1') AS STREETNO
FROM yourTable;

上面的别名STREETNAME_NO_TOWN仅会删除城镇名称(这是您的问题要求的名称),从而保留街道和编号。相反,如果您只想隔离街道,则使用以下方法:

REGEXP_REPLACE(STREETNAME, '^[^,]+, ([^,]+),.*$', '\1')