微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将计算列插入现有表中

如何解决将计算列插入现有表中

我有一列,其中有一串长度不一的文本。我想返回字符串中从位置 1 开始的前 4 个字符,并且仅当存在直接匹配时才将它们输出到表中。因此,如果我只想返回 PDFG 而不想返回 ADHR 或任何其他组合,那么下面的代码对我来说很好用。

use DB
select 
substring(description,1,4) as newcol from table1 where substring(description,4) like '%ABCD%'

但是我想将此计算列保留到现有表中,所以像这样;

use DB
alter table table1
add newcol as ("and then the rest of the code above")

我不知道如何重新排序我的代码以适应新的查询任何帮助表示赞赏。

以下是一些示例数据:

  • PDFG_2013 AHSDHDF
  • ADHR_2310 ADGDGEE
  • DATW_5142 NFBSAEE

输出应存储在名为 table1 的现有表中的 newcol 中。样本数据中新列的唯一值应该是 PDFG

解决方法

如果匹配,则使用 case 表达式返回前 4 个字符,否则返回 null。

Alter table table1
add newcol as case when description like 'ABCD%' then substring(description,1,4) end

或者,更简单

Alter table table1
add newcol as case when description like 'ABCD%' then 'ABCD' end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。