我在StackOverflow上尝试了多个帖子,但没有找到适合我的特定情况的帖子。所以问一个问题:我正在SQL Server 2012中使用存储过程,并创建仅具有单列plan_year
的临时表,如下所示:
DECLARE @tbl_PlanYears TABLE
(
plan_year VARCHAR(4)
);
现在我有一个数组[years] planYears
,我想将它们存储到此表变量中。另外,我想将当前年份存储在此列中。
我正在使用以下代码进行插入:
INSERT INTO @tbl_PlanYears
SELECT string FROM udf_SplitString (@planYears,',')
UNION
SELECT YEAR(GETDATE());
来自planYears
的字符串已正确存储。但是,如何在不替换以前年份的情况下,在同一列中存储当前年份值呢?
答案 0 :(得分:0)
用UNION ALL
代替UNION
INSERT @tbl_PlanYears
SELECT string FROM udf_SplitString (@planYears,',')
UNION ALL
SELECT YEAR(getdate());
答案 1 :(得分:0)
您应该对类型保持一致。如果您希望当前年份也重复出现在字符串中,请使用UNION ALL
:
INSERT @tbl_PlanYears (plan_year)
SELECT string FROM udf_SplitString(@planYears, ',')
UNION ALL
SELECT DATEPART(YEAR, getdate());
UNION
删除重复项。