![](/img/trans.png)
[英]Create stored procedure to add new column based on other column in table (Oracle SQL)
[英]Oracle SQL add new column based on value of other column
我正在尋找一些幫助來根據另一列的值創建一個新列 - 如果這甚至可能的話......這不是一個理想的解決方案,但我已經沒有選擇了。
我需要替換開始的文件夾路徑,更改 \ 的方向並更改擴展名
Existing Field:
\\BRRNAKCL12\Audiofiles22\1Year\Diogarfngal_ZZZZZZZZZ\2020\Aug\03\5249013\5249013-07-25-18-96572.cca
New Field:
/location/TELEDATA/2020/Aug/03/5249013/5249013-07-25-18-96572.wav
Oracle 版本 版本 19.2.1.247
先感謝您
您可以在名為 NewField 的表中添加一個新列:
Alter table TableName add NewField varchar(500);
然后通過替換 ExistingField 中的一些字符來更新 NewField。
update TableName set NewField= replace(replace(existingfield,'\','/'),'.cca','.wav')
在這里,我只是將 '' 替換為 '/' 和 '.cca' 替換為 '.wav'。
還要替換路徑:
update TableName set NewField= '/location/TELEDATA/'||substr(replace(replace(existingfield,'\','/'),'.cca','.wav'),instr(replace(replace(existingfield,'\','/'),'.cca','.wav'),'/2020',1,1) + 1)
DB-小提琴:
模式和插入語句:
create table mytable (existingfield varchar(500));
insert into mytable values('
\\BRRNAKCL12\Audiofiles22\1Year\Diogarfngal_ZZZZZZZZZ\2020\Aug\03\5249013\5249013-07-25-18-96572.cca');
添加新列:
Alter table mytable add NewField varchar(500);
更新查詢:
update mytable set NewField= '/location/TELEDATA/'||substr(replace(replace(existingfield,'\','/'),'.cca','.wav'),instr(replace(replace(existingfield,'\','/'),'.cca','.wav'),'/2020',1,1) + 1)
Select 查詢:
select * from mytable;
Output:
現有字段 | 紐菲爾德 |
---|---|
\BRRNAKCL12\Audiofiles22\1Year\Diogarfngal_ZZZZZZZZZ\2020\Aug\03\5249013\5249013-07-25-18-96572.cca | /location/TELEDATA/2020/Aug/03/5249013/5249013-07-25-18-96572.wav |
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.