【发布时间】:2021-08-08 11:03:03
【问题描述】:
我有一列,里面有一串长度不等的文本。我想返回从位置 1 开始的字符串中的前 4 个字符,并且只有在存在直接匹配时才将它们输出到表中。因此,如果我只想返回 PDFG 而不是返回 ADHR 或任何其他组合,那么下面的代码对我来说就可以了。
use DB
select
substring(description, 1, 4) as newcol from table1 where substring(description, 1, 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
【问题讨论】:
-
你的意思是
XYZABCDEQWE应该给你XYZA吗? -
@jarlh 我的意思是文本并不重要,所有字符串的长度都不同并且都不同,所以一些更具体的例子可能是:PDFG_2013 HJDSSDB DSTV_2615 GDFSTSS 所以我只想返回 PDFG 而不是如果不匹配,则任何其他字符串,但我需要将此计算列存储在现有表中
-
但是 ABCD 在字符串中的哪个位置重要吗?
-
向我们展示一些示例数据 - 以及预期的 newcol 值。
-
@jarlh 我已经编辑了问题以包含一个示例
标签: sql sql-server substring where-clause alter-table