我有一个名为STREETNAME
的列,其中有基于该模型的数据:townName
,streetName
,1
,其中1
是streetName
的房子。如何从整列中删除townName
,并将房屋数量放入名为STREETNO
的单独列中?
答案 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')