我之前的问题是 - insert substring into new column
我想在同一列上运行两种情况。
第一个 -
SET [ref_id] = CASE
WHEN CHARINDEX('-', [full_id]) = 4
THEN SUBSTRING([full_id], 1, 3) ELSE NULL
第二个 -
SET [ref_id] = CASE
WHEN CHARINDEX('ZZZ-', [full_id]) = 1
THEN SUBSTRING([full_id], 5, 3) ELSE NULL
我的[full_id]
列数据格式主要是ABC-123D2-45FG67
但其中一些是全部数字或以ZZZ-
为前缀
如果数据只是数字,我希望[ref_id]
列为NULL。
如果数据的前缀为ZZZ-
,我希望跳过该部分。
如果数据不是ZZZ-
并且以ABC-
开头,我想要复制ABC
(在某些情况下有AB-1234
,那应该是NULL)。< / p>
我的代码工作正常,但两个字符串不能一起运行,当我单独运行它们时,它们会取消上一个查询的工作。
我如何同时运行NULLS并以123456
和AB-1234
感谢您的帮助。
答案 0 :(得分:0)
这不仅仅是一个嵌套你的案例陈述的案例(哈!)吗?
SET [ref_id] = CASE WHEN CHARINDEX('ZZZ-', [full_id]) = 1 THEN SUBSTRING([full_id], 5, 3) ELSE
(CASE WHEN CHARINDEX('-', [full_id]) = 4 THEN SUBSTRING([full_id], 1, 3) ELSE NULL end ) end
编辑:删除“else null”朝向结尾。认为这更好。我没有可供我测试的服务器。
答案 1 :(得分:0)
您想为此使用单个案例陈述:
SET [ref_id] = CASE WHEN CHARINDEX('ZZZ-', [full_id]) = 1
THEN SUBSTRING([full_id], 5, 3)
WHEN CHARINDEX('-', [full_id]) = 4
THEN SUBSTRING([full_id], 1, 3)
ELSE NULL
END