[英]Deleting values and splitting values from single column to multiple ones in SQL
我有一個名為STREETNAME
的列,其中包含基於此模型的數據: townName
, streetName
, 1
其中1
是某個streetName
的房屋streetName
。 如何從整個列中刪除townName
並將房屋數量放入名為STREETNO
的單獨列中?
我建議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
您可以嘗試在此處使用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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.