如何解决Oracle SQL 根据其他列的值添加新列
我正在寻求一些帮助,以根据另一列的值创建一个新列 - 如果这甚至可能的话...这不是一个理想的解决方案,但我已经没有选择了。
我需要替换开始文件夹路径,改变\的方向并改变扩展名
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,'.wav'),instr(replace(replace(existingfield,'/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,1) + 1)
选择查询:
select * from mytable;
输出:
EXISTINGFIELD | NEWFIELD |
---|---|
\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 |
dbfiddle here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。