Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL根据其他列的值添加新列_Sql_Oracle_Replace_Substring_String Concatenation - Fatal编程技术网

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)??我的想法不起作用。。。我期待着您的回复,太好了。祝贺你!最美好的祝福。