Oracle SQL根据其他列的值添加新列
我正在寻找一些帮助,以根据另一列的值创建一个新列-如果这是可能的话。。。这不是一个理想的解决方案,但我已经没有选择了 我需要替换起始文件夹路径,更改\的方向和扩展名Oracle SQL根据其他列的值添加新列,sql,oracle,replace,substring,string-concatenation,Sql,Oracle,Replace,Substring,String Concatenation,我正在寻找一些帮助,以根据另一列的值创建一个新列-如果这是可能的话。。。这不是一个理想的解决方案,但我已经没有选择了 我需要替换起始文件夹路径,更改\的方向和扩展名 Existing Field: \\BRRNAKCL12\Audiofiles22\1Year\Diogarfngal_ZZZZZZZZZ\2020\Aug\03\5249013\5249013-07-25-18-96572.cca New Field: /location/TELEDATA/2020/Aug/03/52490
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);
然后通过替换现有字段中的一些字符来更新新字段
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 * from mytable;
输出:
现有字段
纽菲尔德
\BRRNAKCL12\Audiofiles22\1年\Diogarfngal_zzz\2020\Aug\03\5249013\5249013-07-25-18-96572.cca
/location/TELEDATA/2020/Aug/03/5249013/5249013-07-25-18-96572.wav
可以向名为NewField的表中添加新列:
Alter table TableName add NewField varchar(500);
然后通过替换现有字段中的一些字符来更新新字段
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 * from mytable;
输出:
现有字段
纽菲尔德
\BRRNAKCL12\Audiofiles22\1年\Diogarfngal_zzz\2020\Aug\03\5249013\5249013-07-25-18-96572.cca
/location/TELEDATA/2020/Aug/03/5249013/5249013-07-25-18-96572.wav
您希望提取的路径模式是什么?2020年后是否需要字符串?这是我需要提取的字符串2020\Aug\03\5249013\5249013-07-25-18-96572路径始终是/location/TELEDATA/要提取的路径模式是什么?您是否需要2020年后的字符串?这是我需要提取2020\Aug\03\5249013\5249013-07-25-18-96572的字符串路径始终是/location/TELEDATA/谢谢-新路径始终是/location/TELEDATA/我已修改了我的答案。您可以修改您的答案吗?在本课程结束时,你有“/2020”,1,1)+1)。。。然而,这一年并不总是2020年,所以我不需要它作为一个静态值。有几年的数据,所以这是我想提取的模式的一部分。我认为应该是,1,1,1)+1)??我的想法不起作用。。。我期待着您的回复,太好了。祝贺你!最美好的祝愿。谢谢你-新路径将始终是/location/TELEDATA/我已经修改了我的答案。你能修改你的答案吗?在本课程结束时,你有“/2020”,1,1)+1)。。。然而,这一年并不总是2020年,所以我不需要它作为一个静态值。有几年的数据,所以这是我想提取的模式的一部分。我认为应该是,1,1,1)+1)??我的想法不起作用。。。我期待着您的回复,太好了。祝贺你!最美好的祝福。