我有这个问题: 对于以M和A开头的每个计划,我需要添加3个额外的字符并保留原始字符。此外,以T开头的计划需要保持不变: 例如:
M_VA_K15CVA
M_VA_M20CVA
M_VA_T234
应该是
M_VA_K15CVA
M_VA_K15CVA_V1
M_VA_K15CVA_V2
M_VA_K15CVA_V3
M_VA_M20CVA
M_VA_M20CVA_V1
M_VA_M20CVA_V2
M_VA_M20CVA_V3
M_VA_TNT10-VA
我应该使用什么提示来执行此文件?谢谢
答案 0 :(得分:0)
通过JOIN到具有丢失JOIN条件的派生表,可以将列表扩展为更大的列表。这是满足您需求的代码,假设您在问题中表示“M”和“K”,而不是“M”和“A”,这似乎与您的示例不符。
DECLARE @Plans TABLE
(
PlanID varchar(50)
);
INSERT INTO @Plans (PlanID) VALUES ('M_VA_K15CVA');
INSERT INTO @Plans (PlanID) VALUES ('M_VA_M20CVA');
INSERT INTO @Plans (PlanID) VALUES ('M_VA_T234');
SELECT
CASE
WHEN RowValue IS NULL OR RowValue = 0 THEN
PlanID
ELSE
PlanID + '_V' + CONVERT(varchar,RowValue)
END AS NewPlanID
FROM @Plans
LEFT JOIN (
SELECT 0 AS RowValue
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
) AS RowExpander
ON RIGHT(LEFT(PlanID,6),1) IN ('M','K');