Oracle SQL 根据其他列的值添加新列
Oracle SQL add new column based on value of other column
我正在寻求一些帮助,以根据另一列的值创建一个新列 - 如果这甚至可能...这不是一个理想的解决方案,但我 运行选项。
我需要替换开头的文件夹路径,更改 \ 的方向并更改扩展名
Existing Field:
\BRRNAKCL12\Audiofiles22Year\Diogarfngal_ZZZZZZZZZ20\Aug4901349013-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 的 table 添加一个新列:
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-Fiddle:
架构和插入语句:
create table mytable (existingfield varchar(500));
insert into mytable values('
\BRRNAKCL12\Audiofiles22Year\Diogarfngal_ZZZZZZZZZ20\Aug4901349013-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;
输出:
EXISTINGFIELD
NEWFIELD
\BRRNAKCL12\Audiofiles22Year\Diogarfngal_ZZZZZZZZZ20\Aug4901349013-07-25-18-96572.cca
/location/TELEDATA/2020/Aug/03/5249013/5249013-07-25-18-96572.wav
db<>fiddle here
我正在寻求一些帮助,以根据另一列的值创建一个新列 - 如果这甚至可能...这不是一个理想的解决方案,但我 运行选项。
我需要替换开头的文件夹路径,更改 \ 的方向并更改扩展名
Existing Field:
\BRRNAKCL12\Audiofiles22Year\Diogarfngal_ZZZZZZZZZ20\Aug4901349013-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 的 table 添加一个新列:
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-Fiddle:
架构和插入语句:
create table mytable (existingfield varchar(500));
insert into mytable values('
\BRRNAKCL12\Audiofiles22Year\Diogarfngal_ZZZZZZZZZ20\Aug4901349013-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;
输出:
EXISTINGFIELD | NEWFIELD |
---|---|
\BRRNAKCL12\Audiofiles22Year\Diogarfngal_ZZZZZZZZZ20\Aug4901349013-07-25-18-96572.cca | /location/TELEDATA/2020/Aug/03/5249013/5249013-07-25-18-96572.wav |
db<>fiddle here