我正在使用这个有效的代码根据冒号拆分一列。
,CASE WHEN CHARINDEX (':', ref) > 0
THEN SUBSTRING(ref, 1, CHARINDEX(':', ref) -1)
ELSE NULL
END AS EndVal
'EndVal' 是数字,当它小于 4 个字符时,我需要添加前导零,所以
123 = 0123
1 = 0001
1234 = 1234
我知道我可以使用 RIGHT 或 REPLICATE 函数来实现这一点,但我无法理解如何将它添加到现有代码或编辑它以便它同时完成这两项工作?
对原始代码的任何建议也非常感谢。必须让它在 SQL 2008 上工作,是的,我想升级但是......
您可以在 CASE 语句内部或外部使用 RIGHT,具体取决于在字符串中未找到 ':' 时是否要保留 NULL 值。
内部案例
外部案例
此处的区别在于 CASE 语句中的 NULL 值在 Outside CASE 示例中被替换为四个零,但在 Inside CASE 示例中它们仍然为 NULL。您可以在这个db<>fiddle中看到不同的结果。