簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM